zoj 1259 Rails.
来源:互联网 发布:深圳数据分析培训机构 编辑:程序博客网 时间:2024/06/06 09:26
头一次栈接触这东西,纠结了我四五天。。
刚开始是没理解题,没注意reorganize的意思....重组啊!!!神马是重组,就是乱七八糟的呗``
进的时候是1,2,3,4,5……,可以不在C中停留,一个一个进的话,到B中就是1,2,3,4,5……
要是几组的话,情况就多了,C中会有积累。例如B是3,2,1,4,5.那么就是123|4|5
学了不少,但主要的还是栈的思想
代码层面嘛,那个0比较有意思。
就这些吧,上代码
#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <algorithm>using namespace std;int main(){ int stack[1005], A, top; //栈,也就是C车站 int station_B[1005],B; //进B的顺序,也就是出栈的顺序 int n, i; int ok = 1; start:; scanf("%d", &n); while( n ) { memset(station_B,0,sizeof(station_B)); ok = 1; scanf("%d", &station_B[1]); if (station_B[1] == 0) //当B[1]为0,换车厢数n,goto到scanf n { printf("\n"); goto start; } else { for (i = 2; i <= n; i++) { scanf("%d", &station_B[i]); } A = B = 1; top = 0; //注意top初值 while (B <= n) //进栈顺序是1 2 3 4 5 { if (station_B[B] == A) //若B【】==A,说明进一个就出一个,栈里没有存 { A++; B++; } else if (top && station_B[B] == stack[top]) //栈的最顶元素在B[]中找到(位于最后一个单个进入的后面),若相等的话 { //top向下,B向右,再判断更早的元素stack[top-1]是否还等于b[B+1] B++; top--; } else if (A <= n) //B【】!=A,说明栈里有存数,并且是从小到大存,1,2,3...因为进栈是那个顺序 { stack[++top] = A++; //从小到大进栈 } else { ok = 0; break; } } } printf("%s\n", ok ? "Yes" : "No"); } system("pause"); return 0;
}
- zoj 1259 Rails
- zoj 1259 Rails.
- zoj 1259 Rails
- zoj - 1259 - Rails
- ZOJ 1259 Rails
- ZOJ-1259-Rails
- ZOJ 1259(Rails)
- ZOJ Problem Set -1259 Rails
- zoj 1259 || poj 1363 Rails(栈~!)
- zoj 1259 || poj 1363 rails(栈)
- zoj 1259
- ZOJ-1259
- Rails
- Rails
- Rails
- rails
- Rails
- rails
- 单点登录学习(1)概念篇
- 使Delphi程序记忆参数的设置
- tomcat 相关
- 高校名单:“985”工程大学名单(39所)
- net自动化测试之道API测试-分解一个测试用例
- zoj 1259 Rails.
- 封闭开发第三天
- Delphi忽略程序报错
- 2011-8-10 20:35:36
- 字符串表示,str 和 repr
- 高校名单:“211”工程大学名单(112所)
- 2011-8-10 21:44:45
- poj 1228 Grandpa's Estate(凸包)
- How to use Django with Apache and mod_wsgi