首页 > 其他 > 详细

list

时间:2016-04-10 00:54:06      阅读:284      评论:0      收藏:0      [点我收藏+]

list

uva,127

前面见过几次类似的模型了。似乎输入输出差不多形式。

考虑vector或list里面放stack。因为这道题目只涉及到随机访问,所以vector相对要快一点。

因为每次其左边的第一个或第三个与其与其匹配时,就把它放在左一或左三上。有木有压栈的感觉~~

技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <vector>
 5 #include <stack>
 6 
 7 using namespace std;
 8 
 9 struct Node
10 {
11     char value;
12     char suit;  //char value[2];
13 };
14 
15 int match(Node x,Node y)
16 {
17     if(x.value==y.value || x.suit==y.suit)
18         return 1;
19     return 0;
20 }
21 
22 
23 
24 int main()
25 {
26     vector<stack<Node> > vr;
27     char v,s;       //Node s;
28     while(cin>>v && v!=#)  //cin>>s.value && strcmp(s.value,"#");
29     {
30         cin>>s;
31         stack<Node> sk;
32         sk.push((Node){v,s}); //sk.push(s);
33         vr.push_back(sk);
34         int i;
35         if(vr.size()==52)
36         {  while(true)
37             {
38                 for(i=0;i!=vr.size();i++)
39             {
40                 if(i>=3 && match(vr[i].top(),vr[i-3].top()))
41                 {
42                     vr[i-3].push(vr[i].top());
43                     vr[i].pop();
44                     break;
45                 }
46                 
47                 if(i>=1 && match(vr[i].top(),vr[i-1].top()))
48                    {
49                        vr[i-1].push(vr[i].top());
50                        vr[i].pop();
51                        break;
52                    }
53             }
54             if(i==vr.size()) break;
55             else if(vr[i].empty())
56                 vr.erase(vr.begin()+i);
57             }
58             cout<<vr.size()<<(vr.size()==1?" pile remaining:":" piles remaining:");
59             for(i=0;i<vr.size();i++)
60                 cout<< <<vr[i].size();
61             cout<<endl;
62             vr.clear();
63           }
64         
65     }
66     return 0;
67 }    
View Code

 

list

原文:http://www.cnblogs.com/do-it-best/p/5373024.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!