【栈】铁轨问题
来源:互联网 发布:七牛云存储源码 编辑:程序博客网 时间:2024/04/27 00:36
经典栈问题!第一次做的时候思路太混乱了,现在看了刘汝佳的书,重新整理下。
#include <stdio.h>#include <string.h>/*******************************************************************用数组A存储调整前的车厢号序列,用数组B存储调整好的车厢号序列*用栈stack存储存放在中转站C中的车厢* 用ix_A指向A中最前面的车厢,用ix_B指向B中最前面的车厢** 如果ix_B已经指向了\0,则说明所有车厢已经按指定次序出站,否则* 如果ix_B指向的车厢等于ix_A指向的车厢,则直接把ix_A开到B,否则* 如果ix_B指向的车厢等于stack中的栈元素,则把栈顶车厢开出,否则* 如果此时A中还有车厢,则把A开入中转站C中,否则* 输出无解。*******************************************************************/char stack[1010];char A[1010];char B[1010];int main(int argc, char *argv[]){scanf("%s%s",A,B);int len_a = strlen(A);int len_b = strlen(B);/* 初始化栈 */int top = -1;int tot = 0;int ix_a = 0;int ix_b = 0;while(1){if(A[ix_a] == B[ix_b]){printf("in\n");printf("out\n");++ix_b;++ix_a;if(ix_b == len_b) /* 车已经全出去了,操作成功 */break;}else if(tot != 0 /* 先检查栈是否为空 */ && B[ix_b] == stack[top]){printf("out\n");--tot;--top;++ix_b;if(ix_b == len_b)break;}else if(ix_a != len_a){printf("in\n");++tot;++top;stack[top] = A[ix_a];++ix_a;if(ix_b == len_b)break;}else{printf("无解!\n");return 0;}}printf("完成!\n");return 0;}
- 【栈】铁轨问题
- 栈问题——铁轨
- 铁轨问题 栈的运用
- 铁轨问题(栈操作)
- 铁轨问题
- 铁轨问题
- HDU1022(栈的入门)铁轨问题
- 铁轨 栈
- 栈 铁轨
- 栈------铁轨
- 火车进出铁轨问题
- UVA514 铁轨问题
- 铁轨问题 判断是否为出栈顺序
- 铁轨(栈)
- Rails铁轨(栈)
- 铁轨-栈(stack)
- 栈的应用-铁轨
- 铁轨
- 在图纸中添加日期和时间
- freemarker代替jsp的优势
- Android异步下载网络图片
- C# ListView用法详解
- 用c#实现通用守护进程
- 【栈】铁轨问题
- WINDOWS下读写锁
- 清除应用程序所有缓存
- Scrapy入门教程
- dbcp数据库连接超时解决方案
- Javascript如何直接读取cookies子键值?
- 2013年九大科技发展趋势 一览最新科技动向
- 使用 Visual Studio 分析器找出应用程序瓶颈
- Filter过滤器中要注意的web.xml的事项