El algoritmo de ruta más corta recorre todos los edificios y carreteras de la escuela, con señales que indican si las carreteras son transitables o no.

/*

Consulta con guía turístico del campus

[Descripción del problema]

Diseñe un plan de guía turístico del campus para proporcionar diversos servicios de consulta de información para los visitantes.

[Requisitos Básicos]

(1) Diseña el plan del campus de tu escuela, incluyendo no menos de 10 atracciones. Los vértices en el gráfico representan los lugares escénicos de la escuela y almacenan los nombres, códigos, perfiles y otra información de los lugares escénicos, los caminos están representados por bordes y la longitud del camino y otra información relacionada se almacenan;

(2) Proporcionar a los turistas información sobre cualquier lugar escénico de la imagen.

(3) Proporcionar a los turistas orientación sobre la dirección de cualquier lugar escénico en la imagen, es decir, consultar el camino simple más corto entre dos lugares escénicos cualesquiera.

[Consejos de implementación]

Generalmente, las carreteras del campus son de doble sentido y se puede suponer que la planificación del campus es una red no dirigida. Tanto los vértices como las aristas contienen información relevante.

Análisis de requisitos

1 Seleccione 10 lugares escénicos familiares del plano de la Universidad del Norte de China y resúmalos en un gráfico ponderado no dirigido (como se muestra en la figura). Los vértices del gráfico representan lugares escénicos y los pesos en los bordes representan la distancia entre los dos lugares.

El propósito de esta aplicación es proporcionar a los usuarios consultas de rutas y atracciones. Genere la ruta correspondiente de acuerdo con el punto de inicio y el punto final especificados por el usuario o genere la información del lugar escénico de acuerdo con el lugar escénico especificado por el usuario.

Sur

Norte

2. Diseño del esquema

Este artículo utiliza 1 estructura de datos

*/

p>

/*Incluir archivos de encabezado*/

# include & ltstdio.h & gt

# include & ltprocess.h & gt

/ *Definir constantes simbólicas*/

#definir INT_MAX 10000

#Definición número 10

/*Definir variables globales*/

int cost[n][n];/*El valor del borde*/

intshort[n][n];/*La distancia más corta entre dos puntos*/

int path[n][n];/*Pasando atracciones*/

/*Descripción del prototipo de función personalizada*/

void introduce();

int la distancia más corta();

void float ed();

void display (int i, int j);

División del trabajo entre dos personas

p>

(1) Consulta de información sobre atracciones

(2) La distancia más corta entre dos atracciones

(3) El camino entre dos atracciones

Tercer diseño detallado

void main()

{/*función principal*/

int i, j;

char k;

for(I = 0;i<= n;i++)

for(j = 0;j<= n;j++)

coste[I][j]= INT _ MAX;

coste[1][3]= costo[3][1]= 2;

coste[ 2][3]=Costo[3][2]= 1;

Costo[2][4]=Costo[4][2]= 2;

costo[ 3][10]= costo[10][3]= 4;

coste[1][10]= costo[10][1]= 4;

coste[ 2][10]= costo[10][2]= 4;

coste[4][10]= costo[10][4]= 4;

coste[ 1][4]= costo[4][1]= 5;

Costo[4][5]=coste[5][4]= 3;

Costo[ 4][9]=Costo[9][4]= 4;

Costo[5][9]=Costo[9][5]= 8;

Costo[ 5][7]=Costo[7][5]= 4;

Costo[5][6]=Costo[6][5]= 2;

Costo[ 6][7]=Costo[7][6]= 1;

Costo[7][8]=Costo[8][7]= 3;

Costo[ 8][6]=coste[6][8]= 4;

coste[1][1]= costo[2][2]= costo[3][3]= costo[4 ][4]= costo[5][5]= 0;

Costo[6][6]=coste[7][7]=coste[8][8]=coste[9] [9]=cost[10][10]= 0;

while(1)

{

Printf (" -Bienvenido al recorrido por la Universidad del Norte de China sistema de guía! -\ n ");

Printf("1. Para información sobre las atracciones... por favor presione I (introducción)\ n ");

Printf("2. El atracciones más cortas Consulta de ruta... Por favor presione la tecla s(distancia más corta \ n ");

Printf("3.

Salir del sistema................................................. ................................................. ................ .................................. ................................. .............

Printf("Lista de atracciones escolares:\ n ");

Printf("1:Escuela Puerta Sur");

Printf("2:Apartamento para estudiantes");

printf("3:Jardín de Berlín");

Printf("4:Restaurante"

Printf("5:Gimnasio\ n ");

Printf("6:Biblioteca");

Printf("7:Laboratorio clave"

Printf("8: Edificio principal"); /p>

Printf("9:Ke Yiyuan");

Printf("10: Apartamento para estudiantes de Defensa Nacional \n ");

Printf("Seleccione un servicio:");

scanf("\n%c ",k);

Cambiar (k)

{

Caso "I":

Printf("Ingrese la consulta de información del lugar escénico:");

Introducción (

Descanso; >Caso:

Printf("Ingrese la consulta de ruta más corta:");

distancia más corta();

Descanso;

Case "e":

Salir(0);

Predeterminado:

Printf("¡La información ingresada es incorrecta!\nIngrese la letra I o S o e,\n ");

Descanso;

}

}

}/*principal*/

void introducción()

{/*Introducción a la atracción*/

int a;

p>

Printf("¿Qué atracción prefieres? ¿Quieres comprobarlo específicamente? Introduce el número de atracción: ");

scanf("%d ", a);

getchar();

printf. (" \ n ");

Interruptor (a)

{

Caso 1:

Printf("1: Puerta Sur de la Escuela\n\nHay una majestuosa estatua de piedra de Peng Dehua en la entrada principal de la escuela.\ n \ n "); Pausa;

Caso 2:

Printf ("2: Donde se concentran los pisos de estudiantes. \ n \ n "); Descanso;

Caso 3:

Printf("3: Jardín de Berlín\ n \ n \ nUn lugar para leer y hacer ejercicio por la mañana. \ n \ n "); Descanso;

Caso 4:

Printf("4: Restaurante\ n \ nUn lugar donde comen estudiantes y profesores\ n \ n "); Descanso;

Caso 5:

Printf("5: Gimnasio\ n \ nGimnasio \ n \ nUn lugar para que los estudiantes tomen clases de educación física y hagan ejercicio, incluidos campos de atletismo, campos de fútbol y canchas de baloncesto

Caso 6:

printf(" 6:Biblioteca \ n \ n \nEl centro de recursos de información de la escuela tiene una gran cantidad de salas de estudio. . \ n \ n " ); Descanso;

Caso 7:

Printf("7: Laboratorio Clave de nuestra escuela\ n \ nCentro de Investigaciones e Investigaciones\ n \ n ") ; Descanso;

p>

Caso 8:

Printf("8: Edificio principal\ n \ n \El edificio principal de la oficina administrativa de la escuela.

\n \n "); Descanso;

Caso 9:

Printf("9:Yike Garden\ n \n \Aquí hay una cafetería y una sala de proyecciones.\ n \ n \ n "); break;

Caso 10:

Printf("10: Apartamento de Estudiantes de Defensa\n\nResidencia del Estudiante de Defensa.

\ n \ n "); Descanso;

Valor predeterminado:

Printf("¡Ingreso incorrecto del número de atracción! Ingrese 1->Cantidad 10!\ n \ n ") ;Pausa;

}

}/*Introducción*/

intshortdistance()

{/*Encuentra uno de los dos atracciones La distancia más corta entre */

int i, j;

Printf("Ingrese los números de los dos lugares escénicos a consultar (1-> el número 10 usa ' ,'intervalo):";

scanf("%d,%d ",I,j);

If (i & gtn | | i & lt= 0 | | j & gtn | | j & lt0)

{

Printf("¡La información ingresada es incorrecta!\ n \ n ");

Printf( "Ingrese los números de los dos lugares escénicos que desea consultar (1-> numere los 10 números con intervalos ','):\n ");

scanf("%d, %d " , I, j);

}

Otros

{

floy ed();

Pantalla ( I, j);

}

Regreso 1;

}/*Distancia más corta*/

Floyed hueco()< / p>

{/*Utilice el algoritmo floyed para encontrar el camino más corto entre dos lugares escénicos*/

int i, j, k

for(I = 1; i & lt= n; i++)

for(j = 1; j & lt= n; j++)

{

Más corto[I][j ] =coste[I][j];

ruta[I][j]= 0;

}

for(k = 1;k & lt = n;k++)

for(I = 1;i<= n;i++)

for(j = 1;j<= n;j++)

if(shortest[I][j]& gt;(shortest[i][k]+shortest[k][j])

{/*Usa la ruta[][] para registrar el precursor número de lugar escénico del punto J en el camino más corto de I a J*/

Shortest[I][j]=shortest[I][k]+shortest[k][j];

ruta[I][j]= k;

ruta[j][I]= k;

}

}/*floyed */

Visualización vacía (int i, int j)

{/*Imprime la ruta y la distancia más corta de dos lugares escénicos*/

int a, b;

a = I;

b = j;

Printf("El camino más corto entre los dos lugares escénicos que desea consultar es:\ n \ n " );

if (más corto[i][j]! =INT_MAX)

{

if (i & ltj)

{

printf("%d ", b);

while(path[i][j]!=0)

{/*Imprime todos los lugares panorámicos de la ruta I a J en orden inverso*/

printf ("<-%d", ruta[I][j]);

if (i<j)

j = ruta[I][j];

Otros

I = ruta[j][I];

}

printf(" & lt;-%d" , a);

printf(" \ n \ n ");

printf("(% d-& gt; %d) La distancia más corta es: %d metros\ n\ n ", un

, b, más corto [a][b]);

}

Otros

{

printf("%d ", a);

while(path[i][j]!=0)

{/*Imprime todos los lugares panorámicos de la ruta I a J en orden*/< /p >

printf("->%d", ruta[I][j]);

if (i<j)

j = ruta[I] [ j];

Otros

I = ruta[j][I];

}

printf("-& gt ; %d", b);

printf("\n\n");

printf("(%d->%d)La distancia más corta es:% 5d m \n\n ", a, b, más corto [a][b]);

}

}

Otros

Printf("¡Error de entrada! ¡Esta carretera no existe! \ n \ n ");

printf(" \ n "); p>