xtu 1035 与xtu 1036 两道出栈入栈题目,蛮有趣的
Posted adsry_QAQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xtu 1035 与xtu 1036 两道出栈入栈题目,蛮有趣的相关的知识,希望对你有一定的参考价值。
Description |
||
John是个小列车站的站长,每次列车在这里重新编组时他就很烦恼。因为站上只有一个人字形的编组轨道(如图),所有的列车车厢都是从人字轨的右边依次进去,从左边出来。但有一些编组顺序John总编不出来,John怀疑有些编组顺序是不可能完成的,可John又找不出那些是顺序是可以编组出,那些不可以。请你写一个程序帮助John辨别哪些编组可以完成,哪些不能完成。
第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例,每行为n+1个整数,第一个整数为n 表示有多少节车厢,后面n个整数表示需要编组成的顺序。比如说3节车厢,按照1,2,3依次入轨编组,可以在左边形成1 2 3,1 3 2,2 1 3,2 3 1,321。
每行输出一个测试用例的结果。如果可以编组输出Yes,否则输出No。 |
||
Sample Input |
||
2 3 3 1 2 4 1 2 3 4 |
||
Sample Output |
||
No Yes |
代码#include<iostream>
using namespace std ;
int main(){
int k,n,stack[205],arr[205],mem,num,top;
cin >> k;
while(k--){
cin >>n;
for(int i=0;i<n;i++){
cin >> arr[i];
}
mem = 1;
top = 0;
num = 0;
stack[0] = -1;
while(mem < n+1){//进行入栈操作,从一开始入栈
stack[++top] = mem++;//进行入栈操作
while(stack[top] == arr[num]) {//判断栈顶元素与当期数组元素是否相等,相等则出栈
top--;//出栈后数组减一,即出栈,而num++即枚举完可以判断是否全部出栈,若可以那么输出YES
num++;
}
}
if(top == 0)cout << "Yes" <<endl;
else cout << "No" <<endl;
}
return 0;
}
//https://blog.csdn.net/sinat_27233737/article/details/78004590
考古人员发现地球在一亿年以前曾经存在一个高级文明叫做Delta,而且发现这个文明的具有文字和语言。经过艰苦卓绝的工作,专家们破译了其中的一些文字和表示方法。他们使用+表示加运算,-表示减运算,*表示乘运算,/表示整数除运算,%表示取模运算,但算术式的表示和我们不同,他们把要计算的数放到前面,运算符放在计算对象的后面,比如 1 2 + 表示 1+2, 1 12 + 3 4 + * 表示(1+12)*(3+4)。考古人员希望你帮助他们编写一个程序,计算出这些计算式的值。
第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例。每行为一个字符串(长度不超过200个字符),数和数,数和运算符,运算符和运算符之间分别用一个空格隔开,数都为非负整数,且小于或等于231-1。(所有计算式都符合计算规则,不会出现不可计算的计算式,且结果都为非负整数, 且小于或等于231-1)
每行输出一个测试用例的结果。使用一个字符串表示计算以后的结果。 |
||
Sample Input |
||
2 1 2 + 1 12 + 3 4 + * |
||
Sample Output |
||
3 91 |
||
Source |
||
程序设计实践 | ||
代码: #include <stdio.h>
char ch[222];
int kyx(char ch[])
{
int t,sum;
t=1;
sum=ch[0]-‘0‘;//化为整数
while(ch[t]!=‘ |