理解错题意,wa了几次。
我一开始的理解忽略了实际背景,认为错报是绝对的,不依赖于其左边的人。
而实际上某士兵报数的对错取决且仅取决于他所报的数与其左邻所报的数。
所以假设第一个人没有报错,则其后必有人报错,报错时满足s[i] != s[i - 1] + 1
否则第一个人报错。
acm.hdu.edu.cn/showproblem.php?pid=4727#include <cstdio>
using namespace std;
const int maxn = 1e5 + ; int n, ans;
int s[maxn]; int main(){
int T, kase = ;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
ans = ;
for(int i = ; i < n; i++) scanf("%d", &s[i]);
for(int i = ; i < n; i++){
if(s[i] != s[i - ] + ){
ans = i;
break;
}
}
printf("Case #%d: %d\n", ++kase, ans + );
}
return ;
}