• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C++基于栈实现铁轨问题

c++ 搞代码 4年前 (2022-01-06) 24次浏览 已收录 0个评论

这篇文章主要介绍了C++基于栈实现铁轨问题,实例分析了C++使用栈实现铁轨问题的思路与解决方法,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C++基于栈实现铁轨问题。分享给大家供大家参考。具体分析如下:

示例图如下所示:

经典栈问题!第一次做的时候思路太混乱了,现在看了刘汝佳的书,重新整理下。

 #include  #include  /****************************************************************** * 用数组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) brea<i style="color:transparent">来源gaodai$ma#com搞$代*码网</i>k; } else { printf("无解!\n"); return 0; } } printf("完成!\n"); return 0; }

希望本文所述对大家的C++程序设计有所帮助。

以上就是C++基于栈实现铁轨问题的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C++基于栈实现铁轨问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址