zoukankan      html  css  js  c++  java
  • hdu 1022 Train Problem I 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1022

         又是一道栈的练习,这次也是没有用到STL中的栈来实现。用来保存操作过程的数组(process[])一定要开得足够大(一开始开小了导致wa)

     1 #include <iostream>
     2 #include <string.h>
     3 #include <stdio.h>
     4 using namespace std;
     5 
     6 const int maxn = 10;
     7 int main()
     8 {
     9     char o1[maxn], o2[maxn], stack[maxn]; 
    10     int i, j, n, a, b, k, process[30];
    11     while (scanf("%d", &n) != EOF)
    12     {
    13         scanf("%d%d", &a, &b);
    14         sprintf(o1, "%d", a);   // 把整型的a、b转化成字符串,当然这里可以直接在第11行中写成while(scanf("%d%s%s", &n, o1, o2) != EOF) 
    15         sprintf(o2, "%d", b);
    16     //    cout << "o1 = " << o1 << endl;
    17     //    cout << "o2 = " << o2 << endl;
    18         int top = 0;
    19         int ok = 1;
    20         k = i = j = 0;
    21         memset(process, 0, sizeof(process));
    22         while (j < n)
    23         {
    24     /*        if (o1[i] == o2[j])
    25             {
    26                 i++;
    27                 j++;
    28             } */    // 如果进栈和出栈的顺序刚好相同,则省去不必要的进栈和出栈操作,不过这里为了缩短代码所以干脆注释掉
    29             if (top && stack[top] == o2[j])
    30             {
    31                 top--;
    32                 j++;
    33                 process[k] = 0;    // 保存出栈操作out
    34             }
    35             else if (i < n)
    36             {
    37                 stack[++top] = o1[i++];    
    38                 process[k] = 1;  // 保存进栈操作in
    39             }
    40             else
    41             {
    42                 ok = 0;    
    43                 break;
    44             }
    45             k++;
    46         }
    47         if (ok)
    48         {
    49             printf("Yes.\n");
    50             for (i = 0; i < k; i++)
    51             {
    52                 printf("%s\n", (process[i] ? "in" : "out"));
    53             }
    54         }
    55         else
    56             printf("No.\n");
    57         printf("FINISH\n");
    58     }
    59     return 0;
    60 }
    61 
    62  
  • 相关阅读:
    Eclipse中安装Tomcat
    Merge Query
    如何生成Java Key以及sign一个jar
    Create MSSQL Procedure
    MSSQL Procudure Sample
    MSSQL Get Last Monday and Last Sunday
    oracle Data blocks,Extents,Segments
    Oracle Index Clustering Factor(集群因子)
    mapreduce工作原理
    python 实现一个TwoSum的例子
  • 原文地址:https://www.cnblogs.com/windysai/p/3224082.html
Copyright © 2011-2022 走看看