Red de conocimiento informático - Aprendizaje de código fuente - Algoritmo de ruta más corta C

Algoritmo de ruta más corta C

#include?

#define?MAXNODE?108

int?ruta[MAXNODE?+?1][MAXNODE?+?1] =?{0 };

int?main(void)

{ ARCHIVO?*fpr,?*fpw; int?va,?vb,?i,?j,?k; =?fopen("in.txt",?" r");?/*?El nombre del archivo in.txt que se va a leer*/ fpw?=?fopen("out.txt",?" w") ;? /*? Los datos de la ruta se mostrarán en out.txt? */ while(fscanf(fpr,?" %d%d",?&va,?&vb)?{

for?(i?=?1;?i?<=?MAXNODE;? + +i)?{para?(j?=?1;?j?<=?MAXNODE;? ++j)?++j)?{

si?(!ruta[i][ k]? ||? !ruta[k][j]) continuar

si?(!ruta[i][j]) ruta[i][j] =?ruta[i] [k]?+?ruta[k][j];

else?if?(ruta[i][j]?>?ruta[i][k]?+?ruta[k] [j]) ruta[i][j]?+?ruta[k][j]; }

} } para?(i?=?1;?i?<=?MAXNODE; ? ++i)?{

para?(j?=?1;?j?<=?MAXNODE;? ++j)?{ si(i?==?j)

fprintf(fpw,?" %-10d",?0); else?if(ruta[i][j])

fprintf(fpw,?" %-10d",? ruta[i][j]); ¿más?

fprintf(fpw,?" %-10d",? -1);?

}

fprintf(fpw,?" \n");} return?0;

}

Nota: k es la capa más externa en el algoritmo de Floyd. Esta es la idea de dinámica. Programación ¡No puedes cambiar el orden de i, j, k! ! !

¡Esta es la idea de la programación dinámica!

Aquí es donde la respuesta anterior es errónea.

-1 significa sin significado.

Para un análisis de programa específico, puedo agregarlo a QQ. Si lo desea, puede escribirme QQ.