#include<stdio.h>
#include<string.h>
int a[21][21];
char c[21][21];
int cnt[21] = {0};
int max,maxi;
int main()
{
int n;
int i, j;
scanf("%d", &n);
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
c[i][j] = a[i][j]+'0';
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (strcmp(c[i], c[j]) == 0)
cnt[i]++;//都会算上自身,但不影响比较大小;
}
}
max = cnt[0];
for (i = 1; i < n; i++)
{
if (max < cnt[i])
{
max = cnt[i];
maxi = i;
}
}
for (i = 0; i < n; i++)
{
if (c[maxi][i] == '1')
printf("%d ",i+1);
}
return 0;
}
解题思路:
有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。
每块芯片都要测试其他芯片,而正确的测试结果比错误的测试结果多,即出现最多的那一行测试结果就是正确的。