| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:我的想法有漏洞吗?In Reply To:我的想法有漏洞吗? Posted by:_smiling at 2008-10-05 11:35:18 > 先把每一个车厢i的直接后继初始化为车厢i-1;然后随着输入动态改变车厢i的后继,
> 1.既如果当前输入的车厢号i比前一个输入的车厢号大的话,就改变以当前车厢号为后继的车厢,也就是把车厢号为i+1的车厢的后继由原来的i改变为i-1,如果i-1在前面出现过,就选i-2...,直到i-n,它会在后面出现;
> 2.如果当前输入的车厢号i比前一个输入的车厢号小的话,如果它不是前一个车厢号的后继,就表示这顺序不对,就要输出‘No’;否则继续;
> #include <iostream>
> using namespace std;
>
> int train[1005];//输入的车厢号
> bool ok;
> int behind[1005];//后继
> int used[1005];//是否已用过
>
> int main()
> {
> int n;
> while (scanf("%d", &n), n) {
> while (1) {
>
> scanf("%d", &train[1]);
> if (train[1] == 0)
> break;
> int i;
> ok = 1;
> for (i = 1; i <= n; ++i) {
> behind[i] = i-1;
> used[i] = 0;
> }
> behind[train[1] + 1] = train[1] - 1;
> used[train[1]] = 1;
> for (i = 2; i <= n; ++i) {
> scanf("%d", &train[i]);
> if (ok) {
> if (train[i] > train[i-1]) {
> while (used[train[i]-1]) //确定的改变后继
> --train[i];
> behind[train[i] + 1] = train[i] - 1;
> continue;
> }
> else {
> if (train[i] != behind[train[i-1]])//
> ok = 0;
> }
> used[train[i]] = 1;
> }
> }
> if (ok)
> printf("Yes\n");
> else
> printf("No\n");
> }
> printf("\n");
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator