Codeforces 1826A
思路
1.枚举所有可能的说谎人数
2.当 a[i] 大于说谎人数,说明第i个人说谎,cnt++;
3.当 cnt == a[i], 如果说谎人数恰好等于当前发言者所说的骗子数,则说明找到正解了
C++ 代码
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int t,n;
int a[N];
int main() {
scanf("%d",&t);
while(t--) {
scanf("%d",&n);
for(int i=1; i<=n; i++) cin>>a[i];
int ans = -1;
for(int i=0; i<=n; i++) {
int cnt=0;
for(int j=1; j<=n; j++)
if(a[j]>i) cnt++;
if(cnt==i) {
ans=cnt;
break;
}
}
printf("%d\n",ans);
}
return 0;
}

浙公网安备 33010602011771号