플로이드 알고리즘 구현 방법 알려주시면 감사하겠습니다
-
게시물 수정 , 삭제는 로그인 필요
아래 첨부한 사진에 설명되어 있는 것처럼 구현을
해야하는데 어떻게 해야하는지 모르겠어서요…
이 코드를 이용해서 해야하는데 알려주시면 감사하겠습니다…!
int main ()
{
int i, j, k, tmp;
for (i = 0; i < N; i++)
for (j= 0;j< N;j++)
Path[i][j] = (D[i][j] != INF) ? j: -1;
for (k = 0; k < N; K++) {
for (i = 0; i < N; i++) {
if (i = k) continue;
for (j= 0;j<N; j++){
if (j == K || j == i) continue;
if(D[i][k]==INF || D[k][j]==INF) continue;
if ((tmp = D[i][k] + D[K][j]) < D[i][j]) {
D[i][j] = tmp;
Path[i][j] = k;
}
}
}
printf("=======%d=======\n", k + 1);
for (i = 0; i < N; i++) {
For (= 0; j< N; j++)
printf((D[i][j] >= INF ? "INF ":"%3d "), D[i][j]);
printf("\n");
}
}
printf ("================\n");
for (i = 0; i < N; i++)
for (j= 0; j< N; j++)
if (i != j) print_path(i, j);
void print_ path(int i, int j )
{
if (Path[i][j] == -1 || i == j)
return;
printf("%3d :", D[i][j]);
printf("%d", i) ;
while (i != j) {
i = Path[i][j];
printf("->%d", i);
}
printf("\n");
}
해야하는데 어떻게 해야하는지 모르겠어서요…
이 코드를 이용해서 해야하는데 알려주시면 감사하겠습니다…!
int main ()
{
int i, j, k, tmp;
for (i = 0; i < N; i++)
for (j= 0;j< N;j++)
Path[i][j] = (D[i][j] != INF) ? j: -1;
for (k = 0; k < N; K++) {
for (i = 0; i < N; i++) {
if (i = k) continue;
for (j= 0;j<N; j++){
if (j == K || j == i) continue;
if(D[i][k]==INF || D[k][j]==INF) continue;
if ((tmp = D[i][k] + D[K][j]) < D[i][j]) {
D[i][j] = tmp;
Path[i][j] = k;
}
}
}
printf("=======%d=======\n", k + 1);
for (i = 0; i < N; i++) {
For (= 0; j< N; j++)
printf((D[i][j] >= INF ? "INF ":"%3d "), D[i][j]);
printf("\n");
}
}
printf ("================\n");
for (i = 0; i < N; i++)
for (j= 0; j< N; j++)
if (i != j) print_path(i, j);
void print_ path(int i, int j )
{
if (Path[i][j] == -1 || i == j)
return;
printf("%3d :", D[i][j]);
printf("%d", i) ;
while (i != j) {
i = Path[i][j];
printf("->%d", i);
}
printf("\n");
}
#플로이드 알고리즘 #플로이드 알고리즘 c++ #플로이드 알고리즘 최단경로 출력 #플로이드 알고리즘 파이썬 #플로이드 알고리즘 시간복잡도 #플로이드 알고리즘 자바 #플로이드 알고리즘 최단경로 #플로이드 알고리즘 2 #플로이드 알고리즘 c언어 #플로이드 알고리즘 설명