标签:
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 }
开始刷题的第一天,也只是利用晚上复习完考研回寝室的时间做做自己喜欢的事情,希望可以坚持下去
UVA673
一道栈的经典题目
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 }
标签:
原文地址:http://www.cnblogs.com/wolf940509/p/4594354.html