Hay 2 criterios que debe verificar:
- [matemáticas] A + B + C = P, [/ matemáticas] por lo que [matemáticas] P [/ matemáticas] es el perímetro
- [matemáticas] A <B + C, B <A + C, C <A + B [/ matemáticas]
Sin perder la generalidad, dejemos [math] A \ leq B \ leq C [/ math].
Sabemos que [matemáticas] 3A \ leq A + B + C = P [/ matemáticas], por lo tanto, [matemáticas] A \ leq P / 3 [/ matemáticas]. Nuestra iteración debe ir desde [matemáticas] A = 1 [/ matemáticas] hasta [matemáticas] A> P / 3 [/ matemáticas].
A continuación, necesitamos saber el rango de [matemáticas] B [/ matemáticas] para cada valor de [matemáticas] A [/ matemáticas]. Usando la desigualdad triangular,
- ¿Por qué las longitudes de los lados correspondientes de polones similares son proporcionales?
- ¿Puedes encontrar el volumen de este cubo holey?
- ¿Puedo interpolar entre dos matrices de 3 por 3 que representan transformaciones afines de una forma 2D?
- ¿Cómo encontraría una cantidad de triángulos en un gráfico no dirigido dado?
- Dada una curva de relleno de espacio (por ejemplo, la curva de relleno de espacio de Hilbert) en el plano cartesiano, ¿una distancia especificada a lo largo de la curva representaría un punto en dos dimensiones? ¿A qué correspondería la distancia 1/2 en la curva de Hilbert?
[matemáticas] A + B> C = PAB [/ matemáticas]
[matemáticas] 2B> P-2A [/ matemáticas]
[matemáticas] B> \ frac {P-2A} {2} [/ matemáticas]
[matemáticas] B_ {min} = \ left \ lfloor {\ frac {P-2A} {2} +1} \ right \ rfloor [/ math]
Después de hacer algunas matemáticas, mi enfoque será
- Valor fijo de A a 1
- Comience por [math] B = \ left \ lfloor {\ frac {P-2A} {2} +1} \ right \ rfloor [/ math]. Si [matemáticas] B <A [/ matemáticas], deje que [matemáticas] B = A [/ matemáticas]. Obtenga el valor correspondiente de [matemáticas] C [/ matemáticas].
- Mantenga aumentar el valor de [matemática] B [/ matemática] en 1 y disminuya el valor de [matemática] C [/ matemática] en 1 hasta que [matemática] C <B [/ matemática]
- Incrementar [matemáticas] A [/ matemáticas] en 1.
- Si [matemáticas] A> P / 3 [/ matemáticas], ya está; De lo contrario, regrese al paso 2.
Probé mi algoritmo con C ++, aquí está mi código:
#include
#include
usando el espacio de nombres estándar;
int main () {
perímetro int, a, b, c;
cout << "Ingrese el perímetro del triángulo:";
cin >> perímetro; // El usuario es agradable y soy flojo para verificar la entrada
para (a = 1; a <= perímetro / 3; ++ a) {
// el piso no es necesario si haces división entera usando 2 en lugar de 2.0
b = piso ((perímetro – a * 2) /2.0 + 1);
si (b <a)
b = a; // de lo contrario obtendrás permutación del conjunto anterior
c = perímetro – a – b;
mientras que (c> = b) {
cout << "(" << a << "," << b << "," << c << ")" << endl;
b ++;
C-;
}
}
devuelve 0;
}
Hagamos un seguimiento manual para ver cómo funciona este algoritmo.
Digamos que el perímetro es 20.
Comience desde [matemáticas] A = 1 [/ matemáticas].
[matemática] B = \ floor {\ frac {P-2A} {2} +1} = 10 [/ matemática], [matemática] C = 20-1-10 = 9 <B [/ matemática], sin solución entera para [matemáticas] A = 1 [/ matemáticas].
[matemáticas] A = 2 [/ matemáticas]
[matemática] B = 9 [/ matemática], [matemática] C = 20-2-9 = 9 [/ matemática], [matemática] \ fbox {(2,9,9)} [/ matemática]
Incremente [matemática] B [/ matemática] y disminuya [matemática] C [/ matemática] y encuentre que [matemática] C <B [/ matemática].
[matemáticas] A = 3 [/ matemáticas]
[matemáticas] B = 8, C = 9, \ fbox {(3,8,9)} [/ matemáticas]
Incremente [matemática] B [/ matemática] y disminuya [matemática] C [/ matemática] y encuentre que [matemática] C <B [/ matemática].
[matemáticas] A = 4 [/ matemáticas]
[matemáticas] B = 7, C = 9, \ fbox {(4,7,9)} [/ matemáticas]
Incremento [matemática] B [/ matemática] y decremento [matemática] C [/ matemática], [matemática] \ fbox {(4,8,8)} [/ matemática]
Incremente [matemática] B [/ matemática] y disminuya [matemática] C [/ matemática], y encuentre que [matemática] C <B [/ matemática]
[matemáticas] A = 5 [/ matemáticas]
[matemáticas] B = 6, C = 9, \ fbox {(5,6,9)} [/ matemáticas]
Incremento [matemático] B [/ matemático] y decremento [matemático] C [/ matemático], [matemático] \ fbox {(5,7,8)} [/ matemático]
Incremente [matemática] B [/ matemática] y disminuya [matemática] C [/ matemática], y encuentre que [matemática] C <B [/ matemática]
[matemáticas] A = 6 [/ matemáticas]
[matemáticas] B = 5 [/ matemáticas]. [matemáticas] B <A [/ matemáticas], deje que [matemáticas] B = A = 6, C = 8, \ fbox {(6,6,8)} [/ matemáticas]
Incremento [matemática] B [/ matemática] y decremento [matemática] C [/ matemática], [matemática] \ fbox {(6,7,7)} [/ matemática]
Incremente [matemática] B [/ matemática] y disminuya [matemática] C [/ matemática], y encuentre que [matemática] C <B [/ matemática]
[matemáticas] A = 7> 20/3 [/ matemáticas], hemos terminado.