Programación de la Serie concurso (a) C / C ++ agotamiento algoritmo (violencia búsqueda) y la búsqueda binaria

Creo que muchas personas tienen una voluntad de querer conseguir medallas en el ACM-ICPC, GCJ, TopCoder a nivel universitario, pero el mercado una gran cantidad de curso irregular, no es garantía de calidad y el precio, hay muchas ridículamente caro. Espero que mi artículo puede ayudarle a aprender a ahorrar costes y ofrecer una mayor calidad de las vías de aprendizaje. El título de esta serie de artículos se seleccionan de una serie de libros de algoritmos conocidos, no hay tema original. Pero yo se comprenderá mejor por medio de, intenta explicar resulta difícil entender el algoritmo se vuelve más fácil de entender. Este es mi objetivo, y todo el mundo está dispuesto a aprender juntos, y el progreso común.

Aquí Insertar imagen Descripción

Concurso programación se introdujo probablemente

Tipo de Concurso de Programación hay muchos, hemos tenido que luchar el rendimiento de resolución de problemas. Puede decirse variedad, estamos hablando es el contenido de la programación por lo que el orador es la resolución de problemas. Esa competencia hace, antes de los jugadores titulares conocerán el número de temas, y su tarea es, por un tiempo limitado tanto como sea posible (por supuesto, es correcto y reunir las condiciones necesarias) para completar estas preguntas.

Este artículo es el primer artículo de programación Concurso serie de artículos de introducción, vamos a introducir dos algoritmos de hoy: algoritmos Agotamiento y búsqueda binaria

agotamiento Algoritmos

Agotamiento Algoritmos Ventajas y desventajas

algoritmo de agotamiento , es un algoritmo utilizado por mucha gente, que tiene la ventaja de la simplicidad, pero también tiene grandes inconvenientes. Esa es su complejidad. Su complejidad está directamente relacionada con el número de ciclos a su relación exponencial . Sea n el número de veces por un ciclo, m es el número de sus ciclos. A continuación, su complejidad es O (n ^ el m) , lo que significa que si lo hace un bucle cuádruple entonces su complejidad ya es una figura de miedo. Si usted tiene un niño de cinco veces o más, usted tiene que hacer frente a las horas extraordinarias básica.
Por supuesto, en algunos lugares este algoritmo sigue siendo muy útil, aquí vamos a introducir un tema para describirlo más

Tema: Conseguir triángulo, el tema algoritmo clásicoAquí Insertar imagen Descripción

Para ello podemos analizar este problema, tres palos opcionalmente determina si cumplen las condiciones de un triángulo compuesto de cualquiera de los dos lados es mayor que la suma del tercer lado , satisfecho si entonces usamos algunos medios para grabarlo, y cuando hay una circunferencia mayor cuando el triángulo, nuestro algoritmo puede ser independiente del triángulo más grande perímetro perímetro antes de reemplazar registrado fuera del perímetro. Así podremos tener una idea aproximada.

  1. La determinación de si el triángulo puede estar compuesta.
  2. Si es así, el triángulo se pone alrededor de su perímetro que el tamaño, conserva un gran y puede ser determinada por la composición y los próximos tres triángulos palillo perímetro que el perímetro del triángulo antes. Y que una mayor retención de nuevo.
  3. La salida final es retenido triángulo.
    Aquí se utiliza algoritmos para representar el proceso de la misma.
int n, a[Max];
void solve(){
	int ans = 0;  //答案

	//让i<j<k, 这样棍子就不会被重复选中了
	for(int i = 0; i < n; i++){
		for(int j = i +1; j <n; j++){
			for(int k= j + 1; k< n ; k++){
			int  len = a[i] + a[j] + a[k];               //周长
			int ma = max(a[i] , max(a[j], a[k]));//最长棍子的长度
			int rest = len - ma;
		if(ma < rest){
		//  可以组成三角形,如果可以更新答案则更新
		ans = max(ans, len);
			 }
 		}
 	}
printf("%d\n", ans);
}

	

La explicación de este algoritmo: En primer lugar, asignar los ans , si el grupo no es un triángulo, entonces el valor es 0 ans serán , si se puede hacer un triángulo, entonces ans valor será el mayor perímetro triangular . A continuación, introduzca nuestro enfoque en el bucle triple para algunos amigos para recordar un concepto vago de la gramática, consulte aquí se siente un poco extraño, ¿no es la primera vez que el algoritmo se ejecuta i = 0, j = 1, c = 2, la segunda corre i = 1, j = 2, c = 3 y también lo hacen . De hecho, no de . Debido a que nuestras prioridades de bucle es para iniciar el bucle externo en el circuito , y luego ejecutar todos los bucles terminan en el circuito de ida y vuelta fuera del bucle. Así que, de hecho, todo el palo de todas las posibles combinaciones están relacionados con. Una vez más analiza el contenido del bucle más interno. En primer lugar dejamos que la longitud de tres palo suma asignada a len, len es en realidad perímetro (si se puede hacer un triángulo, entonces) y luego dejar que nos quedamos con los tres, la longitud más larga de la cesión al palo ma, dejar que el resto y la longitud de los dos palos asignados a descansar, con tal de que comparar ma es menor que el resto se puede determinar si el triángulo composición. Si puede, ponemos el perímetro mayor ans asignados , y el ciclo continúa hasta que la aplicación del ciclo completo de todos , porque la parte posterior así que si hay un perímetro más largo del triángulo va a sustituir a la American National Standard originales de valor y re-asignado a la American National Standard. Luego completamos la mayor circunferencia de la tarea de salida

Usted ha hablado de aquí en comparación con el algoritmo Agotamiento tener una buena comprensión.

Aquí Insertar imagen Descripción

La búsqueda binaria

En vista del cielo demasiado tarde, bloggers completar la búsqueda actualización binaria antes de 15:10 . Buenas noches, dulces sueños!

Publicado ocho artículos originales · ganado elogios 41 · vistas 4682

Supongo que te gusta

Origin blog.csdn.net/weixin_45950372/article/details/104743305
Recomendado
Clasificación