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

A: DSKer的卡牌游戏

时间:2018-05-28 16:48:38      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:empty   数组   pre   判断   模拟   else   输出   过程   for   

题目链接: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的卡牌游戏

标签:empty   数组   pre   判断   模拟   else   输出   过程   for   

原文地址:https://www.cnblogs.com/Dicer/p/9100777.html

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