Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Estoy muy ansiosa! ¡Dios, por favor ayúdame a ver qué le pasa a este programa!

¡Estoy muy ansiosa! ¡Dios, por favor ayúdame a ver qué le pasa a este programa!

En primer lugar, nos damos cuenta de que se trata de un proceso de solución transversal cíclico (¡usemos este análisis para resolver este problema por el momento! Es innegable que habrá expertos que encontrarán las reglas y utilizarán el retroceso recursivo para resolverlo. Si así que compártelo con todos, de todos modos lo pensé durante mucho tiempo, ¡pero no pude encontrar un atajo!) Más tarde, descubrí una pequeña regla que creo que puede ahorrar un poco de cálculo, es decir, al realizar un bucle. el límite superior del bucle se puede establecer en (num 1)/2, lo que demuestra que es muy simple, ¡omitido aquí!

¡Miré tu código anterior y parece que escribir 5 también causará problemas!

¿Puedes describir tu algoritmo con palabras? ¡Podemos discutir esto más a fondo! ¡Esperamos continuar la discusión!

Mi algoritmo es el siguiente:

Uso dos números i, j (ilt; = j) entre 0~(num 1)/2, a través de bucles dobles i, j, continuamente encuentre la suma de números naturales continuos num;

Al mismo tiempo, compare el tamaño de j-i con el _j-_i anterior, tome el valor mayor y guárdelo en _j, _i.

Hasta finalizar el doble ciclo. El número natural continuo final es _j~_i.

El código fuente es el siguiente:

// Decompose_into_123.cpp: define el punto de entrada de la aplicación de consola.

//

#include "stdafx.h"

void decompose(int);

int _tmain(int argc, _TCHAR * argv[])

{

int N;

printf("Ingrese el número entero n =" para descomponer

<); p> scanf("d",amp; N);

descomponer(N);

devolver

}

descomposición nula (int num)

{

int s=(num 1)/2, T=0, n=0, i=0, j=0, _i=0 , _j=0, l;

while(jlt; (num 1)/2)

{

for(i=j;ilt;=( núm 1)/2; i )

{

T=T i;

si(T==núm)

{

n ; l=i-j;

si(lgt; _i-_j)

{_i=i; p> }

}

si(n==0)

T=0

j ;

<; p> }

if(n==0)

printf("Sin respuesta");

else

{

printf("d =", num);

for(int k=_j; k lt; _i; k)

printf("d ", k

printf("d",_i

}

);