tijeras martillo B1018 (20 minutos)

tema:

Debemos ser capaces de jugar "martillo y tijeras" juego: ambos dan gesto, el resultado de las reglas como se muestra:
Aquí Insertar imagen Descripción
Ahora dados los dos hombres se enfrentan registros, estadísticas de victorias tanto, plana, número negativo, y da los dos lados son qué gesto más posibilidades de ganar.

Formato de entrada:
Introduzca línea 1 da un número entero positivo N (≤10 ^ 5), es decir, tanto el número de la confrontación. Entonces N filas, cada fila da la confrontación de la información, es decir, se da el gesto y lados B al mismo tiempo. C significa "martillo", los representativos J "tijeras", B es sinónimo de "tela", la primera letra representa a un partido, en nombre de la segunda parte, existe un espacio intermedio.

Formato de salida:
salida de la primera y segunda líneas se dan A, B gana, plano, número negativo, separados por un espacio inter-digital. Línea 3 muestra dos cartas representan A, B gana el mayor número de gestos, hay un espacio intermedio. Si la solución no es única, la salida alfabéticamente solución mínima.

de entrada de la muestra:

10
CJ
JB
CB
BB
BC
CC
CB
JB
BC
JJ

Resultado de muestra:

5 3 2
2 3 5
BB

Significado de las preguntas:

El número de resultado estadístico de dos personas, y dos personas a ganar la mayoría de los golpes.

Resolver

Por primera vez para escribir el código, sin conversión es 0-3, por lo que en ese momento me juzgo a un montón de problemas, y finalmente, el mismo juicio cuando se emiten en orden lexicográfico del camino.

  • El chaleco compensador de flotabilidad convierte en orden lexicográfico, y puede ser visto 0,1,2 tiempo ganador es el (x + 1)% 3 == y (sutileza conversión).
  • Cuando la salida, porque antes de ordenar en orden lexicográfico es bueno, por lo que el caso no tiene que ser atravesado determina el número máximo de veces en el mismo caso en el que la determinación lexicográficamente.
#include <stdio.h>
int change(char a){
	int m;
	if(a=='B') m=0;
	if(a=='C') m=1;
	if(a=='J') m=2;
	return m;
}
int main(){
	int n;
	char mp[3] = {'B','C','J'};
	scanf("%d",&n);
	int array1[3]={0},array[3]={0};
	int h1[3]={0},h2[3]={0};
	for (int i=0;i<n;i++){
		getchar();
		char a,b;
		int x,y;
		scanf("%c %c",&a,&b);
		x= change(a);y=change(b);
		if((x+1)%3==y){
			h1[x]++;
			array1[0]++;array[2]++;		
		}else if (x==y){
			array1[1]++;array[1]++;
		}else {
			array1[2]++;array[0]++;
			h2[y]++;
		}
		}
	printf("%d %d %d\n",array1[0],array1[1],array1[2]);
	printf("%d %d %d\n",array[0],array[1],array[2]);
	int k1=0,k2=0;
	for(int i=0;i<3;i++){
		if(h1[k1]<h1[i]){
			k1=i;
		}
		if(h2[k2]<h2[i]){
			k2=i;
		}
	}
	printf("%c %c",mp[k1],mp[k2]);
}

referencia

Colección Dios de la Lluvia

Publicado 91 artículos originales · ganado elogios 9 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/WeDon_t/article/details/105103865
Recomendado
Clasificación