Preguntas de prueba VIP prueba de chip de práctica básica (encontrar reglas, estadísticas)

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 1

Salida 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;
}

 

Supongo que te gusta

Origin blog.csdn.net/with_wine/article/details/115023022
Recomendado
Clasificación