算法竞赛入门——铁轨
来源:互联网 发布:淘宝花店 编辑:程序博客网 时间:2024/04/30 05:45
某城市有一个火车站,铁轨铺设如图所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择:A-->C和C-->B。输入样例:51 2 3 4 555 4 1 2 36 6 5 4 3 2 1样例输出:YesNoYes这里用了两种方式,一种是没用STL库的,一种是用了STL库的代码如下:
#include<stdio.h>#include<iostream>const int MAX = 1000;int S[MAX];int main(){ int i, n; int a[1000]; while (scanf("%d", &n)) { for (i = 0; i<n; i++) { S[i] = i + 1; } for (i = 1; i <= n; i++) { scanf("%d", &a[i]); } int top = n-1; int flag = 0, j = 1, k = n; while (top) { printf("%d", S[top]); if (S[top] == a[j]) { top--; j++; flag = 1; } if (S[top] == a[k]) { top--; k--; flag=1; } else { break; } } if (flag) printf("Yes\n"); else printf("No\n"); } return 0;}
#include<iostream>#include<stack>using namespace std;int main(){ stack<int>S; int n; int a[1000]; while (cin>>n) { for (int i = 1; i <= n; i++) { S.push(i); cin >> a[i]; } int j = 1, k = n, flag=0; while (!S.empty()) { if (S.top() == a[j]) { flag = 1; j++; } if (S.top() == a[k]) { flag = 1; k--; } else { flag = 0; break; } S.pop(); } if (flag) cout << "Yes" << endl; else cout << "No" << endl; }}
阅读全文
0 0
- 算法竞赛入门——铁轨
- 算法竞赛入门经典P91铁轨
- 算法竞赛入门经典-铁轨问题
- 算法竞赛入门经典 6.1.2 (Y型)铁轨
- 算法竞赛入门经典:第六章 数据结构基础 6.2铁轨
- 【py交易】算法竞赛入门经典6.1.2 铁轨python
- 算法之路二:刘汝佳算法竞赛入门经典:栈和队列 铁轨UVa514
- 算法入门 6.1.2 铁轨
- 算法竞赛——入门经典p35
- 算法竞赛入门——6174问题
- 算法竞赛入门——字母重排
- 算法竞赛入门——小球下落
- 算法竞赛入门经典——<1>
- 例题6.1 铁轨【算法入门经典】
- 《算法竞赛入门经典》习题——Chapter 1
- 《算法竞赛入门经典》习题——Chapter 2
- 《算法竞赛入门经典》——重新实现库函数
- 算法竞赛入门经典——训练指南
- R语言KNN聚类
- 困兽之斗
- 城市成语接龙
- 日志单例log4cpp简述
- SSD-tensorflow使用文档(-)——测试训练基本流程
- 算法竞赛入门——铁轨
- Csharp零基础:第一天学Csharp要会的基础知识
- Unity_打印图形-金字塔
- HDOJ1224 floyed裸题 + 模板程序
- [Msg] Failed
- 重载ShadowSSDT
- Netfileter机制--规则的匹配方式
- [POJ](2456)Aggressive cows ---二分查找+贪心(查找+贪心)
- 剑指Offer第6题(Java实现)