c언어 초보입니다. 2차원 배열 워셜알고리즘

조회수 649회

워셜 알고리즘을 실행할 수 있는 코드를 짜는건데 어디서 부터 잘못된건지 전혀 원하는 답이 나오지 않아요. 예를들어

2

3

100

010

000

4

1000

0010

1111

0000

했을때 결과 값이 나와야 하는데 배열을 입력하는것 부터가 다르게 나옵니다. 어디서부터 잘못된걸까요 도와주세요!

#include <stdio.h>
#include <stdlib.h>

#define MAX 10                                      // 배열크기 선행 처리

int main(void)
{                                       
    int num, v;
    int array[MAX][MAX];

    printf("\t--------------------------------------------------------\n");
    printf("\t\tWarshall's Algorithm\n");
    printf("\t--------------------------------------------------------\n\n");

    printf("전체 데이터 수");
    scanf("%d", &v);                            // 데이터파일에서 '전체 테스트 데이터 수' 입력


    while (v > 0) {                                 // 데이터 수만큼 배열 입출력 루프

        printf("행렬의 크기");
        scanf("%d", &num);                  // 데이터 파일에서 '행렬의 크기' 입력

        for (int m = 0; m < num; m++) {
            printf("행렬입력\n");

            for (int n = 0; n < num; n++) {
                scanf( "%d", &array[m][n]); // array[num][num]
            }                                   // 행렬의 크기만큼 for구문으로 데이터를 입력받음
        }

        /* Warshall's Algorithm */
        for (int k = 0; k < num; k++) {
            for (int i = 0; i < num; i++) {
                for (int j = 0; j < num; j++) {
                    array[i][j] = array[i][j] || (array[i][k] && array[k][j]);
                }
            }       // i->j거리를 i->k + k+j, 즉 i->k->j 간의 거리로 저장한다. 
        }

        printf("%d\n", num);                    // 실행결과 출력시 행렬의 크기 출력
        for (int m = 0; m < num; m++) {
            for (int n = 0; n < num; n++) {
                printf("%2d", array[m][n]);     // Warshall's Algorithm을 적용시킨 실행결과 출력
            }
            printf("\n");
        }
        v--;                                    // 실행해야 할 남은 전체 테스트 데이터 수를 계산
    }

    return 0;
}

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    이미지

    실행 시켜 봤는데 동작이 되는거 같은데요?

    혹시 행렬의 값을 키보드로 입력할 때 1 0 0 처럼 스페이스를 넣어서 입력하지 않고 100로 스페이스 없이 입력한거 아닌가요?

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 아 제가 멍청했네요... 감사합니다!!!! 김수빈 2020.11.24 12:03

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)