zoukankan      html  css  js  c++  java
  • POJ 1363 Rails 解题报告

    POJ 1363 Rails 解题报告

    题目的意思是给出一组数,问你是不是一组合法的出栈序列。
    我有两个思路:
    1、每个已出栈之后的数且小于此数的数都必须按降序排列。复杂度O(n^2)
    2、另一个思路就是直接模拟入栈出栈过程。虽然模拟毫无技巧可言,但复杂度O(n),优于算法1。
     1
     2#include <cstdio>
     3
     4int stack[1005]; //
     5int stack_len; //栈顶位置
     6
     7int main()
     8{
     9    int n;
    10    while ( scanf( "%d"&n ), n != 0 )
    11    {
    12          int tmp;
    13          int last;
    14          while ( scanf( "%d"&tmp ) )
    15          {
    16                int max = 0;//初始化部分
    17                int flag = 1;
    18              stack_len = 0;
    19              last = 1;
    20              
    21              if ( tmp == 0 )   {putchar('\n'); flag = -1;break;}//如果是0结束此case
    22              while ( last < tmp ) stack[stack_len++= last++;//入栈
    23              max = last;
    24              
    25              for ( int i = 1; i < n; ++i )
    26              {
    27                    scanf( "%d"&tmp );
    28                    if ( flag ) //前提是合理则判断,若已不合理只读如数据,不进行判断
    29                    {
    30                      if ( stack_len != 0 && stack[stack_len-1== tmp ) //如果栈非空且下一个该出栈的数字与读入数字相同,则出栈
    31                      {
    32                           --stack_len;
    33                           last = tmp;
    34                           max>?=last;
    35                      }

    36                      else if ( tmp > last ) //如果读如的数字比已出栈的最大数字还大,则将读入数字之前的数字全部入栈,此数字作为出栈数字
    37                      {
    38                           for ( int i = max+1; i < tmp; ++i )
    39                           {
    40                               stack[stack_len++= i;
    41                           }

    42                           max = last = tmp;
    43                      }

    44                      else //如果以上两个条件都不满足,则说明此数列不满足题意
    45                      {
    46                           flag = 0;
    47                      }

    48                    }
     
    49              }

    50              printf( "%s\n", (( flag == 1 )?"Yes":"No") );
    51          }

    52    }

    53    return 0;
    54}

    55
  • 相关阅读:
    每日一剂 14-6-6
    每日一剂 14-6-5
    每日一剂 14-6-4
    每日一剂 14-5-30
    Maven清理 .lastUpdated文件
    Docker 将项目做成镜像部署在docker中
    Docker 镜像拷贝到 正式环境运行
    Docker 安装 Tomcat
    Docker 安装 ActiveMq
    Docker 安装 nginx
  • 原文地址:https://www.cnblogs.com/PureMilk/p/1246607.html
Copyright © 2011-2022 走看看