[Blue Bridge Cup] Entrenamiento de preguntas del examen 2014 C ++ A Pregunta grupal 7 Las hormigas se resfrían

Las hormigas se resfrían

Hay n hormigas en un poste delgado y recto de 100 cm de largo. Algunas de sus cabezas miran hacia la izquierda y otras miran hacia la derecha.

Cada hormiga solo puede trepar hacia adelante a lo largo del poste a una velocidad de 1 cm / seg.

Cuando dos hormigas se encuentran, se darán la vuelta y gatearán en direcciones opuestas al mismo tiempo.

Entre estas hormigas, una se resfrió. Y cuando te encuentres con otras hormigas, contagiarás un resfriado a las hormigas que encuentres.

Por favor, calcule cuántas hormigas se resfriaron cuando todas las hormigas se alejaron del poste.

ingresar

Ingrese un número entero n (1 <n <50) en la primera línea, que representa el número total de hormigas. 

La siguiente línea es n números enteros Xi (-100 <Xi <100) separados por espacios El valor absoluto de Xi representa la distancia entre la hormiga y el extremo izquierdo del polo. Un valor positivo indica que la cabeza está mirando hacia la derecha y un valor negativo indica que la cabeza está mirando hacia la izquierda. No habrá valor cero en los datos y no habrá dos hormigas ocupando la misma posición. Entre ellos, la hormiga representada por los primeros datos se ha resfriado.

Producción

Se requiere generar un número entero, que representa el número de hormigas que se resfriaron al final. 

Entrada de muestra


-10 8 -20 12 25 
Ejemplo de salida

3

 

Análisis del problema

En lugar de simular un giro en U después del encuentro, utiliza dos recorridos. Después de encontrar un resfriado, equivale a dos hormigas que se atraviesan y avanzan sin afectarse entre sí. Es solo que el número de hormigas con un resfriado aumenta , y cuando el segundo Al atravesarlo, es principalmente para considerar la dirección de la hormiga que fue cogida con un resfriado por primera vez y la hormiga de frente. Para decirlo más sin rodeos, soy la hormiga que se resfrió. Hay una hormiga que se acerca frente a mí. Entonces definitivamente infectaré a esa hormiga. Después de que nos encontremos, continuaremos avanzando. Más tarde, si Aún encuentro una hormiga que viene La hormiga debe pasarle el resfriado Esto es después del primer recorrido del bucle, cada vez que la hormiga esté infectada con un resfriado, agregue uno. Luego, cuando el número total de hormigas resfriadas no es 1, significa que acabo de conocer a otras hormigas en el camino y también se resfriaron, así que considere las hormigas que han sido infectadas con un resfriado. El mismo principio

#include <iostream>
#include <math.h>
using namespace std;

int main(int argc, char** argv) {
	int n;
	cin >> n;
	int a[n];
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
	int x = a[0];
	
	if(x > 0){	//感冒蚂蚁向右 
		int res = 1;
		for(int i = 0; i < n; i++){
			if(a[i] < 0 && -a[i] > x){	//遇上从右向左的蚂蚁 感冒+1  -a[i] - x > 0
				res ++;
			}
		}
		if(res != 1){	//有从右向左的蚂蚁 
			for (int i = 0; i < n; i++){
				if(a[i] > 0 && a[i] < x){
					res ++;
				}
			}
		}
		cout << res << endl;
	}
	
	if(x < 0){ //感冒蚂蚁向左 
		int res = 1;
		for(int i = 0; i < n; i++){
			if(a[i] > 0 && a[i] < -x){	// -x - a[i]> 0
				res ++; 
			}
		}
		if(res != 1){
			for(int i = 0 ; i < n; i++){
				if(a[i] < 0 && -a[i] > -x){	//a[i] > -x -a[i] - -x > 0
					res ++;
				}
			}
		}
		cout << res << endl;
	}

	return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44566432/article/details/115263247
Recomendado
Clasificación