网址如下:
Rails - UVA 514 - Virtual Judge (vjudge.net)
(第三方网站)
一道有关栈的题,还行
思路:
B请求目标车厢
检查C的栈顶是否有目标车厢
有,移到B
无,检查A目前的第一个车厢
如果目标车厢大于第一个车厢,A->C
如果等于,A->B
如果小于,不可能,输出No
题目没认真看,输出No或Yes变成NO或YES
而且代码中间有个漏洞
好在是改好了
代码如下:
#include<stack>
#include<cstdio>
using namespace std;
int B[1001], A;
int main(void)
{
int N;
while(scanf("%d", &N) == 1 && N)
{
while(scanf("%d", &B[1]) == 1 && B[1])
{
//输入
for(int i = 2; i <= N; i++)
scanf("%d", &B[i]);
//开始判断
bool is_judge = true; stack<int> C; A = 1;
for(int i = 1; i <= N; i++)
{
int coach = B[i];
if(!C.empty() && C.top() == coach) C.pop();
else
{
if(coach > A){C.push(A++); i--;}
else if(coach == A) A++;
else{is_judge = false; break;}
}
}
if(is_judge) printf("Yes\n");
else printf("No\n");
}
putchar('\n');
}
return 0;
}
博客围绕一道栈相关的算法题展开,给出题目网址。解题思路为根据请求目标车厢,检查栈顶及当前第一个车厢情况进行操作。期间因未认真看题输出格式有误,代码也有漏洞,不过最终完成修正。
&spm=1001.2101.3001.5002&articleId=136690185&d=1&t=3&u=1b4ef35e25a24916831369a4794523de)
512

被折叠的 条评论
为什么被折叠?



