• A: DSKer的卡牌游戏(1310)


    题目链接: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("
    ");
    53     }
    54     return 0;
    55 } 
  • 相关阅读:
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    建立索引该如何选取字段
  • 原文地址:https://www.cnblogs.com/Dicer/p/9100777.html
Copyright © 2020-2023  润新知