水题。 注意理解题意,士兵只要编号是前边一个士兵编号加一就是正确的。有一个坑点,那就是如果全都没出错,那么一定是第一个士兵出错了。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
using namespace std;
int a[100100];
int main() {
int T;
scanf("%d", &T);
int k;
for(k = 1; k <= T; k++) {
int N;
scanf("%d", &N);
int i;
int flag = 0, ans;
for(i = 0; i < N; i++) {
scanf("%d", a + i);
if(flag == 0 && a[0] + i != a[i]) {
flag = 1;
ans = i;
}
}
if(!flag) ans = 0;
printf("Case #%d: %d\n", k, ans + 1);
}
return 0;
}
本文介绍了一个简单的算法问题HDU4727的解决方案。该问题要求检查一系列士兵编号是否连续,并找出第一个错误编号的位置。文章通过C++代码实现了解决方案,关键在于判断每个士兵编号是否为前一名士兵编号加一。
1077

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



