A: DSKer的卡牌游戏
Posted Dicer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A: DSKer的卡牌游戏相关的知识,希望对你有一定的参考价值。
题目链接:http://acm.xidian.edu.cn/problem.php?id=1310
用栈模拟整个过程,我在开始的时候先往栈中压入了一个‘m’,用来和第一个压入的y或Y判断,方便代码与后面相同,也方便栈空是的操作(原因是不怎么熟悉stack,瞎J8想 了一个操作),模拟他的全过程就好,题目没有其他难点;
还有就是清空栈,(虽然不知道为什么第一次没有清空栈也过了),但还是觉得应该清空栈;后面一题就因为没有清空队列卡了好久;
1 #include<stdio.h> 2 #include<stack> 3 #include<string.h> 4 5 using namespace std; 6 7 char A[1005]; 8 stack<char> S1; 9 char B[1005]; 10 11 void dfs(int len) 12 { 13 for(int i = 0;i < len;i++) 14 { 15 int top = S1.top(); 16 if(A[i] == top && A[i] == ‘y‘) 17 { 18 S1.pop(); 19 A[i] = ‘Y‘; 20 i--; 21 } 22 else if(A[i] == top && A[i] == ‘Y‘) 23 { 24 S1.pop(); 25 } 26 else 27 S1.push(A[i]); 28 } 29 } 30 31 32 33 34 int main() 35 { 36 while(scanf("%s",A) != EOF) 37 { 38 while(!S1.empty()) //清空栈 39 S1.pop(); 40 41 S1.push(‘m‘); 42 dfs(strlen(A)); 43 int k = 0; 44 while(S1.top() != ‘m‘) //将栈中数据去除放到一个数组中,正序输出 45 { 46 B[k] = S1.top(); 47 S1.pop(); 48 k++; 49 } 50 for(int i = k - 1;i >= 0;i--) 51 printf("%c",B[i]); 52 printf("\n"); 53 } 54 return 0; 55 }
以上是关于A: DSKer的卡牌游戏的主要内容,如果未能解决你的问题,请参考以下文章
IOS游戏推荐再任性一次,再次全DLC体验这款超高评分的卡牌游戏,再不上车,可能就真的没有下一次了