zoukankan      html  css  js  c++  java
  • POJ1068Parencodings

    直接看代码

     1 /****************************************************
     2 思路就是吧没办法配对的左括号放在栈里,
     3 如果有一个新的右括号,那他一定只能和栈顶的左括号配对
     4 *****************************************************/
     5 #include <cstdio>
     6 #include <stack>
     7 using namespace std;
     8 int ans[25], Case, N;
     9 int main()
    10 {
    11     while(~scanf("%d", &Case))while(Case -- )
    12     {
    13         stack<int>Stack;//定义一个栈,放的是还没有配对的左括号
    14         int  num = 0, a, pre = 0;//pre保存之前输入的数
    15         scanf("%d", &N);
    16         for(int i = 0; i < N; i ++ )
    17         {
    18             scanf("%d", &a);
    19             if(a != pre)//如果输入的不等于之前的数,表示有新的左括号
    20             {
    21                 for(int j = pre; j < a; j ++ )//把新的左括号全部放进栈
    22                 {
    23                     Stack.push(1);//由于栈里的数表示这个左括号和与之对应的右括号之间的右括号数目
    24                 }                 //所以最开始默认为只有与其对应的那一个
    25                 ans[num] = Stack.top();//由于输入的数代表的是右括号,所以将与他相邻的左括号拿走
    26                 Stack.pop();
    27                 if(!Stack.empty())Stack.top() += ans[num];//由于拿走了一个栈里的左括号,   
    28                 num++;                                    //也就是说新的栈顶左括号内部又多了之前括号里所拥有的右括号
    29                 pre = a;
    30             }
    31             else//输入的数等于之前的数,便是要和栈里的左括号配对
    32             {
    33                 ans[num] = Stack.top();
    34                 Stack.pop();
    35                 if(!Stack.empty())Stack.top() += ans[num];
    36                 num++;
    37             }
    38         }
    39         for(int i = 0;i < num; i ++ )
    40         {
    41             printf("%d%c", ans[i], (i == num-1) ? '
    ':' ');
    42         }
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    DbUtils类基本使用
    【struts2】ActionContext与ServletActionContext
    Eclipse 菜单---Eclipse教程第04课
    Eclipse 窗口说明---Eclipse教程第03课
    Eclipse 修改字符集---Eclipse教程第02课
    Java 开发环境配置
    Eclipse 安装(Neon 版本2016年)---Eclipse教程第01课
    eclipse中link方式安装插件
    linux 源码安装mysql 5.5
    shell执行mysql命令
  • 原文地址:https://www.cnblogs.com/gj-Acit/p/3222128.html
Copyright © 2011-2022 走看看