Límite de recursos
Límite de tiempo: 1,0 s Límite de memoria: 512,0 MB
Descripción del problema
Hay n (2≤n≤20) chips, tanto buenos como malos, se sabe que hay más chips buenos que malos.
Cada chip se puede utilizar para probar otros chips. Cuando se usa un buen chip para probar otros chips, puede decir correctamente si el chip probado es bueno o malo. Cuando se usa un chip defectuoso para probar otros chips, dará aleatoriamente un resultado de prueba bueno o malo (es decir, este resultado no tiene nada que ver con la calidad real del chip probado).
Proporcione los resultados de las pruebas de todos los chips y pregunte qué chips son buenos.Formato de entrada
La primera línea de datos de entrada es un número entero n, que representa el número de chips.
La segunda fila de la fila n + 1ª es una tabla de n * n con n datos en cada fila. Cada dato de la tabla es 0 o 1. Los datos de la i-ésima fila y la j-ésima columna (1≤i, j≤n) en las n filas representan el resultado de la prueba obtenido cuando se utiliza el i-ésimo chip para pruebe el j-ésimo chip, 1 significa bueno, 0 significa malo, y siempre es 1 cuando i = j (no significa el resultado de la prueba del chip en sí mismo. El chip no puede probar en sí mismo).Formato de salida
Salida de los números de todas las fichas buenas en orden ascendente
Entrada de muestra
3
1 0 1
0 1 0
1 0 1Salida de muestra
1 3
Ideas:
De la pregunta "Hay más fichas buenas conocidas que malas". Se puede deducir: Cuando una ficha buena es juzgada por otros: el número de 0 en ella será menor que el número de 1. Los chips relativamente malos son juzgados por otros: el número de unos será menor que el número de ceros.
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
int i,j;
int a[21][21];
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
}//输入数据
int f=0;
for(j=1;j<=n;j++)
{
int sum1=0,sum0=0;
for(i=1;i<=n;i++)
{
if(a[i][j]==1)
sum1++;
else
sum0++;
}
if(sum1>sum0)
{
if(f==0)
{
printf("%d",j);
f=1;
}
else
printf(" %d",j);
}
}
return 0;
}