디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[조공] 형들 소스짜는데 좀도와줘 ㅜ

또비(14.51) 2011.03.13 19:41:06
조회 164 추천 0 댓글 2






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

#define MAX_STACK_SIZE 100
#define ROW_SIZE 3
#define COL_SIZE 4
#define TRUE 1
#define FALSE 0

typedef struct // 4방향의 좌표를 가질 구조체
{
        int row;
        int col;
        int dir;
}element;

element stack[MAX_STACK_SIZE];

typedef struct 
{
        int vert;
        int horiz;
}offsets;

offsets move[4];

int top = -1;

char mark[ROW_SIZE+2][COL_SIZE+2];
int EXIT_ROW = ROW_SIZE,    EXIT_COL = COL_SIZE;
int maze[ROW_SIZE+2][COL_SIZE+2] = { // 미로를 구성하는 배열 (바깥테두리는 모두 1로 표시)
 {1,1,1,1,1,1},
 {1,0,0,0,0,1},
 {1,0,0,0,0,1},
 {1,0,0,0,0,1},
 {1,1,1,1,1,1},
};

void path(void);
void add(int *top, element item);
element del(int *top);
void stack_full();
element stack_empty();

int main(void)
{

        int i, j;

        for(i=0;i<=ROW_SIZE+1; i++)
        {
                for(j=0; j<=COL_SIZE+1; j++)
                {
                        if (maze[i][j] == 0) mark[i][j] = \'0\';
                        if (maze[i][j] == 1) mark[i][j] = \'1\';
                }
        }

        move[0].vert = 1; move[0].horiz = 0; /* 동쪽 */
        move[1].vert = -1; move[1].horiz = 0; /* 서쪽 */
        move[2].vert = 0; move[2].horiz = 1; /* 남쪽 */
        move[3].vert = 0; move[3].horiz = -1; /* 북쪽 */

        path();

        for(i=0;i<=ROW_SIZE+1; i++)
        {
                for(j=0; j<=COL_SIZE+1; j++)
                {        
                        printf("%c", mark[i][j]);
                }
                printf("\\n");
        }
        return 0;    
}

void path(void)
{
        int i, j, row, col, next_row, next_col, dir, found = FALSE;
 
        element position;

        maze[1][1] = 1;
        top =0;
        stack[0].row = 1;
        stack[0].col = 1;
        stack[0].dir = 0;

        while(top > -1 && !found)
        {
                position = del(&top);
                row=position.row;
                col=position.col;
                dir=position.dir;
                while(dir < 4 && !found) 
                {
                        next_row = row + move[dir].vert;
                        next_col = col + move[dir].horiz;

                        if(next_row == EXIT_ROW && next_col == EXIT_COL)
                        {
                                found = TRUE;
                        }
                        else if(!maze[next_row][next_col])
                        {
                                maze[next_row][next_col] = 1;
                                position.row = row;
                                position.col = col;
                                position.dir = ++dir;
                                add(&top, position);
                                row = next_row;
                                col = next_col;
                                dir = 0;
                        }
                        else ++dir;
                }
        }

        if(found)
        {
                printf("The path is:\\n");
                printf(" row col\\n");
                for(i = 0; i<=top; i++)
                {
                          printf(" <%3d,%3d> ", stack[i].row, stack[i].col);

                        for (j=0; j<4; j++)
                        {
                                if (stack[i+1].row - stack[i].row == move[j].horiz && stack[i+1].col - stack[i].col == move[j].vert)
                                {
                                        mark[stack[i].row ][stack[i].col ] = j + 2  + \'0\';     
                                }
                        }
                        if((i+1)%6 == 0) printf("\\n");
                }

                printf(" <%3d,%3d> ", row, col);
                printf(" <%3d,%3d>\\n", EXIT_ROW, EXIT_COL);
  
                for (j=0; j<4; j++)
                {
                        if (row - stack[i-1].row == move[j].horiz && col - stack[i-1].col == move[j].vert)
                        {
                                mark[stack[top].row ][stack[top].col ] = j + 2+ \'0\';
                        }
                        if (EXIT_ROW - row == move[j].horiz && EXIT_COL - col == move[j].vert)
                        {    
                                mark[row][col] = j + 2+ \'0\';   
                        }
                }
        
                for(i=0; i<ROW_SIZE+1; i++)
                {
                        for (j=0; j<COL_SIZE+1; j++)
                        {
                                switch (mark[i][j])
                                {
                                           case \'2\':
                                            mark[i][j] = \'>\';
                                            break;
                                           case \'3\':
                                            mark[i][j] = \'<\';
                                            break;
                                           case \'4\':
                                            mark[i][j] = \'V\';
                                            break;
                                           case \'5\':
                                            mark[i][j] = \'^\';
                                            break;
                                }
                        }
                }
                
                mark[EXIT_ROW][EXIT_COL] = \'F\';
        
         }
         else printf(" The maze does not have a path\\n");
        
}
        
void add(int *top, element item)
{
        if(*top >= MAX_STACK_SIZE-1)
        {
                stack_full();
                return;
        }
        stack[++(*top)] = item;
}

element del(int *top)
{
        if(*top == -1)
        return stack_empty();
        return stack[(*top)--];
}

void stack_full()
{
        fprintf(stderr, "Stack is full !! \\n");
}

element stack_empty()
{
        element item;
        item.col = -1;
        item.dir = -1;
        item.row = -1;
        fprintf(stderr,"Stack is empty !! \\n");
        return item;
}

횽들 미로찾기소스인데

여기서 이걸 최단경로로 찾아가는걸로바꿀려고하는데

장애물이 하나도없을시 ㄴ이나 ㄱ이 가장 최단경로인데

돌리면 ㄹ로 빙빙돌아서가네 

이런거 어떻게 막아줘야되 ㅜ?

부탁해형님들 도와줘

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 외모와 달리 술 일절 못 마셔 가장 의외인 스타는? 운영자 24/07/01 - -
238651 시바 파일이 삭제도 안되고 비워지지도않고 제어판도안됨 재수12학번갤로그로 이동합니다. 11.03.16 111 0
238650 일베에 졸작대행 카페 갔는데 애들 의뢰 한게 돋는닼ㅋㅋㅋㅋ [5] 허세강갤로그로 이동합니다. 11.03.16 827 0
238649 진짜 심각해요 어떻하죠? [2] elwlwlwk갤로그로 이동합니다. 11.03.16 97 0
238646 누가 제발 리눅수 파일 만들어서 cmd 키고 ping쏘고 putty 로 [1] 풋사과1갤로그로 이동합니다. 11.03.16 91 0
238645 노가다해서 배운것만 가지고 프로그램 만들지 말고 검색해서 쉽게 [1] 봐봐(210.110) 11.03.16 60 0
238644 Merge sort 질문 [1] MMS(165.194) 11.03.16 60 0
238643 ;;;; 뭔가 심각해졌어요 ;;;; [2] elwlwlwk갤로그로 이동합니다. 11.03.16 92 0
238641 아 복학생이라 묻는다 [6] 윤사장갤로그로 이동합니다. 11.03.16 182 0
238640 독학사 시험봐본사람 [4] 히틀러제독갤로그로 이동합니다. 11.03.16 93 0
238639 스트럿츠나 스프링으로 만든 실무웹소스있음 좀 보여줘봐봐봐 겨자단(61.255) 11.03.16 55 0
238638 C언어 포인트 질문점 [10] 자료구조론갤로그로 이동합니다. 11.03.16 268 0
238637 50보 100보.jpg [4] ㅇㅇ(222.107) 11.03.16 206 0
238636 게임 망함 ㅋㅋ(58.230) 11.03.16 126 0
238635 C언어 질문좀 하고싶어요 [1] 히힝기(183.98) 11.03.16 70 0
238634 나 진짜 밤새보고 몰라서 질문하는건데 피보나치 시간복잡도 아시는분 ㅠㅠㅠ [8] 천재yg갤로그로 이동합니다. 11.03.16 495 0
238633 실습할라면 컴터가 좋긴 좋아아도ㅔㄴ다 [1] po게이wer갤로그로 이동합니다. 11.03.16 98 0
238632 형들 질문있어요 [1] 맛둥도련님갤로그로 이동합니다. 11.03.16 35 0
238631 여기 숙제 갤러리 맞죠? [2] 김장군(218.152) 11.03.16 112 0
238630 파일 입출력 질문좀 드릴께요 [1] ㅁㄴㅇㄹ(203.234) 11.03.16 62 0
238628 c++ 질문좀 드릴게요 [3] gg(119.194) 11.03.16 83 0
238627 아무리 간단한 숙제라도 밤새가면서 풀어보지 않은 이상... [1] SODmaster갤로그로 이동합니다. 11.03.16 102 0
238626 도와주세요 형들 ㅠ.ㅠ 페도라만 세시간째 깔고있어요 ㅠㅠ [6] ㅇㅇ(175.197) 11.03.16 121 0
238625 전과를했는데요. 아무것도모르겠어요. [1] 저지먼트갤로그로 이동합니다. 11.03.16 370 0
238623 형들 c++질문좀... [1] 바빌론(118.44) 11.03.16 79 0
238622 자기소개서 써야하는데.. [1] 미역c(203.237) 11.03.16 57 0
238620 질문좀 PostMessage [4] ㅇㅇ(121.162) 11.03.16 144 0
238619 한눈에 보이는 우리나라. [1] 먹튀(121.130) 11.03.16 157 0
238618 static 이 개새끼 머임???? [3] 자바배우는넘(175.205) 11.03.16 129 0
238617 대가리로는 어떻게할지알겟는데 손을못대면 [2] 짱쌘도둑도쌘짱갤로그로 이동합니다. 11.03.16 61 0
238616 C언어 초간단한문제!!! 조언좀,,, ㅋ [5] 니ㅎㅁ내꺼갤로그로 이동합니다. 11.03.16 125 0
238614 Qt creator 좀 괜찮구나 [1] Rei@디씨갤로그로 이동합니다. 11.03.16 101 0
238612 it대학 하면 어디가 진리 인가요? [3] ㅂㅈ(183.109) 11.03.16 168 0
238610 VMware 쓰는사람 질문요 ㅜㅜ 큰일났음 [2] 눅눅하다(175.205) 11.03.16 83 0
238609 C언어 간단한 질문요 ㅠㅠ 니ㅎㅁ내꺼갤로그로 이동합니다. 11.03.16 53 0
238607 c언어도 제대로못하는데 컴공계속잇어야되냐 [1] 짱쌘도둑도쌘짱갤로그로 이동합니다. 11.03.16 110 0
238606 아 시발 후달려 죽겠네 [4] 캐닭(211.248) 11.03.16 92 0
238605 잡스 개새끼 해봐 [2] 유리한갤로그로 이동합니다. 11.03.16 150 0
238604 제일 중요한건 db다. [3] 계백(61.255) 11.03.16 122 0
238603 C언어 졸라 개입문하는놈인데 질문이 하나 있어요 히힝기(183.98) 11.03.16 50 0
238602 kb 스타콘의 위엄 [1] 개쉛기갤로그로 이동합니다. 11.03.16 105 0
238601 안드로이드 vs iOS vs WP7 최강 모바일 OS는 무엇?! [1] ㅇㅇ(119.71) 11.03.16 106 0
238600 opencv를 이용한 영상 전송 초보자(220.73) 11.03.16 496 0
238599 안드로이드 스터디를 하려고 하는데 [2] 허허벌판갤로그로 이동합니다. 11.03.16 61 0
238598 c++ 공부할때 책이나 동영상 추천좀 [1] 11(121.172) 11.03.16 137 0
238597 형들 나 자바가 급 재미가 없어졌어 [10] 아망했다..(121.185) 11.03.16 246 0
238596 학교 리눅스 서버에 접속해서 하는데 여기 빔 설정 못함?? [14] ㅁㅁㅁㅁ갤로그로 이동합니다. 11.03.16 150 0
238595 이번에 안드로이드 교육 받으러 가는데.. [2] 역시천재갤로그로 이동합니다. 11.03.16 81 0
238594 조인하면 속도가 느려지냐? [11] 물속의다이아갤로그로 이동합니다. 11.03.16 163 0
238592 for문으로 변화중 뭐가 잘못된걸까요? [3] for(220.70) 11.03.16 133 0
238591 횽들 컴퓨터 아키텍처 관련하여서 mips 프로세서에 대해서 질문점할게요 [13] 컴구조어려웡(203.253) 11.03.16 1019 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2