(嗯……其实是2-5章忘了做笔记 现在又太懒不想补了 【逃】)
例题6-1 uva210
题目感觉很长很吓人,教主也没有直接给出代码,并行执行是什么也没有听说过,因此感觉有点难办
反复读了n遍后 好像有了思路
S1 读取总case数
S2 Initialize 程序数,5类格式耗时,每个程序的限制时间
S3 对于每个程序:清空对应存储vector --> 读取命令,忽略空行 -->记录已经完成了第i条命令的读入
S4 对每条队列进行处理
处理函数(序号)
噫好麻烦我放弃了先看例题6-2好了 嘤嘤嘤
例题6-2 uva514
!!为啥觉得例题2比例题1简单好多T_T
用一个栈即可表示题目中的中转站。
emmm....Presentation Error
(还是高估自己了以为可以一次AC 啊我好菜)
查了一下发现是错误理解了题目中的“there is no line in the output file corresponding to the last "null" block of he input file"这句话
原来是说最后结束的0那个模块的末尾没有回车 而不是说最后一个实际执行的模块末尾没有回车
果然i改掉这个错误以后就愉快AC啦~
#include
#include
#include
using namespace std;
const int maxn = 1000+10;
int target[maxn];
int main(){
int n;
while(cin >> n && n!=0){
for(;;){
memset(target,0,sizeof(target));
stack
s;
bool ok = true;
for(int i = 1; i<=n; i++){
cin >> target[i];
if(i == 1 && target[1] == 0) {
ok = false;
break;
}
}
if(!ok) break;
//对target进行处理
int A = 1, B = 1;
//A表示准备入站的车号
//B表示已经出站的数量
while(B<=n){
if(A == target[B]){
A++;
B++;
}
else if(!s.empty() && s.top() == target[B]){
s.pop();
B++;
}
else if(A<=n){
s.push(A++);//don't forget to impliment A
}
else{
ok = false;
break;
}
}
cout << (ok? "Yes":"No")<<"\n";
}
cout << endl;
}
}