Red de conocimiento informático - Conocimientos de programación - Registro de ideas de programación

Registro de ideas de programación

Bueno, ¡esta pregunta de inversión es demasiado difícil para una persona como yo que no es muy buena en matemáticas y tiene una gran cabeza (el coeficiente intelectual es un defecto)! Pero quiero compartir lo que se me ocurre, solo como referencia;

Primero, quiero cometer un error. Un [100001] está escrito incorrectamente. El valor máximo exacto no está claro, pero ciertamente no existe un subíndice tan grande. El propósito aquí es simplemente establecer una matriz lo suficientemente grande, ¡no hay necesidad de hacerlo tan grande!

Bien, volvamos al tema:

Por ejemplo, supongamos * * * que hay n elementos y m personas. El nivel de ira de la persona menos enojada es L, y. el nivel de ira del más adulto (es decir, el total * * * El nivel de ira del artículo (que lleva artículos) es R, el peso del I-ésimo artículo es a [i] y el nivel de ira del j -ésima persona es b[j] (no se usa aquí). Supongamos que sólo hay dos resultados y que la media está fijada en la mitad.

scanf("dd", ampn amp;m);? //Ingrese n elementos ym personas.

for(I = 1; I lt= n; I){//Ingrese los pesos de n elementos, asigne valores en secuencia y guarde el peso total y la copia de seguridad.

scanf("d ", ampa[I]);

suma = a[I]

}

r = Sum; //El total predeterminado es el valor predeterminado del valor máximo de ira (¿es realmente posible?)

l = 0 //Toma 0 como el valor de ira de la persona menos enojada (calcula desde aquí; )

p>

int? RS;? //Encuentra el valor máximo del interruptor de control

while(r-l gt; 1){?//Si la diferencia entre el valor máximo y el valor mínimo es menor que 1, se considera que el valor óptimo se ha encontrado la solución.

media =(l r)/2;? // Calcula el valor intermedio (reduce el rango, lo mismo ocurre en el medio, no es necesario repetir)

sum = 0;? //Se utiliza para registrar la relación aproximada entre valores.

RS = 1;

for(I = 1;i lt= n;i){

if(suma a[I] lt;= mid )sum = a[I]; //Al principio, si los valores no son lo suficientemente grandes, se suman.

otro{? //Después de agregar a un cierto nivel, cambie a otro algoritmo, reduzca su valor y vuelva a calcular.

suma = a[I];

if(suma gt; mid){? // Si este valor es mucho mayor que el valor medio, es básicamente el valor máximo, pero no descarta que haya un valor mayor que este, por lo que no se utiliza la declaración break;? Pero dale al interruptor un valor grande.

RS = 10000000;

}

rs ;? // Switch plus 1 demuestra que hay un valor de vitalidad más que el valor promedio.

}

}

If (rs gtm)l = mid; //El número de personas con un valor de ira mayor que el valor medio es mayor que el número total de personas, lo que significa que todos pueden pasar al siguiente nivel.

¿Y si? If (rs lt= m)r = mid;// De lo contrario, todos tienen que bajar un nivel y dar el valor medio al valor máximo.

}Entonces, siempre que finalice el ciclo, puedes obtener el valor mínimo de la ira máxima usando r como valor (está un poco mareado, no importa, solo míralo más, no importa si no lo entiendes, no necesariamente es correcto de todos modos, jaja);