지하철최단거리 관련 되서 질문 드려요 ..(소스있음)
목화
지하철 최단거리를 구현하는 프로그램을 짜보려 하는대요 ..
알고리즘을 참고하여 숫자를 입력받아 최단거리 구하는것은 구현이 됫는대.
이 수를 수가 아님 역의 이름으로 입력을 받아 구해 가려면 ..어떻게 해야 하나요 ..
문자열일 입력받아 정수로 입력받아 ..계산을 해야 하는건지..
혹시 관심잇는분은...힘좀 주세요 ..그럼 수고하시고요 .좋은 휴일되세요 ..
========================================================================================================================
#include stdio.h
#define n 8
#define m 5000
void main()
{
int data[8][8] ={
{0,2,m,m,m,3,m,m},
{2,0,4,1,m,3,m,m},
{m,4,0,m,3,m,m,m},
{m,1,m,0,3,m,2,m},
{m,m,3,3,0,m,m,4},
{3,m,m,m,m,0,6,m},
{m,m,m,2,m,6,0,4},
{m,m,m,m,4,m,4,0}};
int i,j,k,s,e,min;
int v[8], distance[8];
printf( ================ 지 하 철 노 선 도 =====================\n);
printf( [1] -- 2 -- [2] -- 4 -- [3] -- 3 -- [5] -- 4 -- [8] \n);
printf( ↓ ↘ ↗ ↗ \n);
printf( 3 13 4\n);
printf( ↓ ↘↗ ↗ \n);
printf( ↓ [4] -- 2 -- [7] \n);
printf(↗ \n);
printf( [6] - - - - - - - - - 6 - - - - - - \n);
printf( ==========================================================\n);
printf(\n 시작점을 입력하시오:);
scanf(%d,&s);
printf(도착점을 입력하시오:);
scanf(%d,&e);
for(j=0;j8;j++)
{
v[j]=0;
distance[j]=m;
}
distance[s-1]=0;
for(i=0;i8;i++)
{
min=m;
for(j=0;j8;j++)
{
if(v[j]==00 && distance[j]min)
{
k=j;
min=distance[j];
}
}
v[k]=1;
if(min==m)break;
for(j=0;j8;j++)
{
if(distance[j]distance[k]+data[k][j])
distance[j]=distance[k]+data[k][j];
}
}
printf(%d = %d: %d\n,s,e,distance[e-1]);
}
-
난새
우리나라 지하철 역에는 각 지하철마다 역아이디가 존재합니다.
역아이디와 역명(역명은 복수도 존재)을 가지고 있는 테이블을 만드시는게 효율적일듯 합니다.
예전에 제가 다녔던 회사에서 지하철노선에 관련된 서비스를 했을때 사용했던 방법입니다.