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;
}
posted @ 2024-08-09 15:24  LTphy  阅读(16)  评论(0)    收藏  举报