Algoritmo de ruta más corta C
#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.