数据结构练习题——栈
来源:互联网 发布:ubuntu mac lrzsz 编辑:程序博客网 时间:2024/06/06 07:33
Time Limit: 1sec Memory Limit:256MB
Description
小明很喜欢玩射击游戏。他刚考完了数据结构期末考试,感觉不错,于是又来到了射击娱乐场放松一下。和上次一样,先从老板那租了一把步枪和装有N发子弹的弹夹。这里,再把规则说一遍。在射击的过程中,小明每次都有两种选择:从弹夹中取出一颗子弹上膛,或者打一发子弹出去。注意:所有的子弹都从枪口上膛。小明感觉这有点像《数据结构》课程中的“栈”的特点。因此在打完了这N发子弹之后,他想验证一下这些子弹打出来的顺序是不是真的满足“栈”的特性。假设N颗子弹的编号为1,2,…,N。子弹从弹夹中取出的顺序也是从1到N,这里N = 10。给定一个子弹被打出的顺序,你可以帮小明验证它满不满足“栈”的打出顺序吗?
Input
可能有多个测试输入,第一行给出总共的测试输入的个数。
每个测试输入只有一行:用空格隔开的十个数,表示子弹打出的编号顺序。
Output
对每个测试输入,输出只有一行:
“Yes”,如果打出顺序满足“栈”的特点;
“No”,如果打出顺序不满足“栈”的特点。
Sample Input
3
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
3 1 2 4 5 6 7 8 9 10
Sample Output
Yes
Yes
No
/*用一个栈模拟输出过程,再用一个数组存储该顺序。最后比较输入数组和模拟输出的数组是否完全相同。 */ #include <iostream>#include <stack>using namespace std;int main() {int T, n, i, j, k, diff, index, num, a[15], b[15];cin >> T;while (T--) {stack<int> sta;index = 0;sta.push(1); // 1首先进栈 num = 1;for (i = 0; i < 10; i++) {cin >> a[i];while (a[i] >= num) {sta.push(num++);} // 当输入的数大于当前数时,说明要输出的数还未进栈 if (a[i] == sta.top()) {b[index++] = sta.top();sta.pop();} // 将模拟栈输出的顺序存到数组b中 }for (i = 0; i < 10; i++)if (a[i] != b[i]) {cout << "No" << endl;break;} // 若a与b中有元素不同,说明输出顺序不同,即不满足栈输出顺序 if (i == 10) cout << "Yes" << endl;}}
0 0
- 数据结构练习题——栈
- 数据结构练习题——合并表
- UOJ#228——基础数据结构练习题
- 栈-《数据结构1000》-练习题
- 数据结构--双栈队列练习题
- 数据结构--栈的反转练习题
- TOJ 1225 数据结构练习题——Huffman Coding
- 2778: 数据结构练习题——分油问题
- 2778: 数据结构练习题——分油问题
- 数据结构练习题——先序遍历二叉树
- 数据结构练习题 约瑟夫环—用循环链表实现
- 数据结构:练习题
- 数据结构练习题
- 数据结构练习题
- 复习(数据结构):栈:c语言:练习题
- 数组-《数据结构1000》-练习题
- 字符串-《数据结构1000》-练习题
- 链表-《数据结构1000》-练习题
- Maven的POM.xml详解(二)
- C++ 通过JNI调用Java
- wifi移植
- 排序算法:插入排序
- HDU 1106 排序
- 数据结构练习题——栈
- NYOJ 题目891 找点
- 【java】TreeSet的定制排序
- ef not in和 GroupBy 分组
- Activity中UI框架基本概念
- Android Intent 序列化反序列化
- 一只菜鸟的Qt学习路程(QList的使用以及LNK1196错误)
- Linux系统创建文件时readonly file system解决方法
- Q4.9 Find all paths which sum to a given value