码迷,mamicode.com
首页 > 其他好文 > 详细

入门经典——基础数据结构专题(List)

时间:2015-06-23 06:06:03      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

UVA127

链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=63

一道非常好的栈的模拟题,训练计划又往后推了一周,因为各种事情,不过自己已经做了修改,另外说一下,今晚寝室那两尊神不在,难得的心情好,

这题其实还是看了别人的代码的,大牛博客:http://blog.csdn.net/hyczms/article/details/38009937

我的代码:

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<cmath>
 6 #include<vector>
 7 #include<stack>
 8 #include<algorithm>
 9 using namespace std;
10 const int maxn=54;
11 struct Card
12 {
13     char value,suit;
14 };
15 int judge(Card x,Card y)
16 {
17     return (x.value==y.value||x.suit==y.suit);
18 }
19 int main()
20 {
21     stack<Card> s[maxn];
22     Card card;
23     int n=0,i;
24     while(scanf("%c%c", &card.value, &card.suit) && card.value != #)
25     {
26         getchar();
27         s[n++].push(card);
28         if(n==52)
29         {
30             int m=1,flag;
31             while(true)
32             {
33                 for(i=m;i<n;i++)
34                 {
35                     if(i>=3&&judge(s[i].top(),s[i-3].top()))
36                     {
37                         flag=1;
38                         break;
39                     }
40                     else if(i>=1&&judge(s[i].top(),s[i-1].top()))
41                     {
42                         flag=2;
43                         break;
44                     }
45                 }
46                 if(i==n)
47                     break;
48                 if(flag==1)
49                 {
50                     s[i-3].push(s[i].top());
51                     m=i-3;
52                 }
53                 else
54                 {
55                     s[i-1].push(s[i].top());
56                     m=i-1;
57                 }
58                 s[i].pop();
59                 if(s[i].empty())
60                 {
61                     for(int j=i;j<n-1;j++)
62                         s[j]=s[j+1];
63                     while(!s[n-1].empty())
64                         s[n-1].pop();
65                     n--;
66                 }
67             }
68             if(n>1)
69                 printf("%d piles remaining:",n);
70             else
71                 printf("%d pile remaining:",n);
72             for(int i=0;i<n;i++)
73             {
74                 printf(" %d",s[i].size());
75                 while(!s[i].empty())
76                     s[i].pop();
77             }
78             printf("\n");
79             n=0;
80         }
81     }
82     return 0;
83 }
View Code

开始刷题的第一天,也只是利用晚上复习完考研回寝室的时间做做自己喜欢的事情,希望可以坚持下去

 

UVA673

链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=103&page=show_problem&problem=614

一道栈的经典题目

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<cmath>
 6 #include<vector>
 7 #include<stack>
 8 #include<algorithm>
 9 #include<cctype>
10 #include<cstdlib>
11 using namespace std;
12 const int maxn=128+10;
13 //char s[maxn];
14 int main()
15 {
16     int T;
17     cin>>T;
18     getc(stdin);
19     while(T--)
20     {
21         char s[maxn];
22         gets(s);
23         stack<char> a;
24         int str1=]-[;
25         int str2=)-(;
26         int n=strlen(s);
27         for(int i=0;i<n;i++)
28         {
29             if(a.empty())
30             {
31                 a.push(s[i]);
32                 continue;
33             }
34             char t=a.top();
35             if(s[i]-t==str1||s[i]-t==str2)
36                 a.pop();
37             else
38                 a.push(s[i]);
39         }
40         if(a.empty())
41             cout<<"Yes"<<endl;
42         else
43             cout<<"No"<<endl;
44     }
45     return 0;
46 }
View Code

 

入门经典——基础数据结构专题(List)

标签:

原文地址:http://www.cnblogs.com/wolf940509/p/4594354.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!