디시인사이드 갤러리

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

갤러리 본문 영역

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

또비(14.51) 2011.03.13 19:41:06
조회 166 추천 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 - -
238917 ㅇㅇ 형 소스 잘받았어. 고마워 쇼스케형 고마워 슈밤ar(183.106) 11.03.18 55 0
238916 쿄스케형은봅니다 [5] ㅇㅇ(116.40) 11.03.18 111 0
238915 네이버 경력직 Pre-Test 봐본횽있어요? [2] 사회인(121.166) 11.03.18 1472 0
238914 횽들은 넷북 안 씀? 넷북사고 싶은데 싸고 쓸만하게 살 방법 없나? [1] ㅇㅇㅇ(121.144) 11.03.18 93 0
238913 일본을 구원할 미국인 원전전문가. [3] 슈밤ar(183.106) 11.03.18 166 0
238912 금탁 2일째 [2] elwlwlwk갤로그로 이동합니다. 11.03.18 140 0
238911 아이폰 DB 데이터 변환공식 [8] 우아아갤로그로 이동합니다. 11.03.18 105 0
238910 ㅇㅇ 횽, 쿄스케형 [7] 슈밤ar(183.106) 11.03.18 63 0
238909 쿄스케횽 [5] ㅇㅇ(116.40) 11.03.18 68 0
238908 현 페이지 전체 이미지 가져오기 (wget??) [1] ooowww(119.206) 11.03.18 159 0
238907 사랑하는 쿄스케형 [4] 슈밤ar(183.106) 11.03.18 79 0
238906 형들..AR 어플인 mixare 이거 분석사이트 없나여? [6] 슈밤ar(183.106) 11.03.18 4377 0
238905 오늘면접보는디 [4] 시크한훈남갤로그로 이동합니다. 11.03.18 161 0
238904 아 Return Value Optimization... [1] SODmaster갤로그로 이동합니다. 11.03.18 83 0
238903 베이스샀당 ^ㅅ^ [4] elwlwlwk갤로그로 이동합니다. 11.03.18 116 0
238901 원격 데스크탑 ㅅ.....ㅂ [4] 똥구녕향기갤로그로 이동합니다. 11.03.18 104 0
238900 프갤러들 친절하당 ㄹㅇㄴ(210.178) 11.03.18 102 0
238899 프로그래머는 숙제 봄.니.다. [4] 물속의다이아갤로그로 이동합니다. 11.03.18 138 0
238898 MFC질문점여 [4] MFC발(58.229) 11.03.18 124 0
238895 수업 자체가.. 교수한테 수업받는거랑 강사한테 받는거랑.. 크지 않나요? [3] ㅇㅇ(222.113) 11.03.18 112 0
238894 트럭은 봉고가 갑이셨제 기아 봉고(58.224) 11.03.18 76 0
238892 오늘 기사 봤뜸? 여자로서 직장 동료는 최악이래 [10] (125.7) 11.03.18 325 0
238891 아! 가카!! [1] iljeomobolt갤로그로 이동합니다. 11.03.18 67 0
238890 해일리는 봄.니.다. [7] 물속의다이아갤로그로 이동합니다. 11.03.18 95 0
238889 오늘은 이거다!!! [2] 은행강도갤로그로 이동합니다. 11.03.18 123 0
238888 꾹꾹 누르고 두들겨보라고! [2] SODmaster갤로그로 이동합니다. 11.03.18 108 0
238887 오랜만에 은강♡해일리 네여 [3] SODmaster갤로그로 이동합니다. 11.03.18 81 0
238886 본격 은강횽 인사글 [14] 해일리갤로그로 이동합니다. 11.03.18 97 0
238885 서비스 좀 받으려 하면 회사가 망하네 이모군(1.225) 11.03.18 70 0
238884 211.245.***.*** 개색끼야 [1] SODmaster갤로그로 이동합니다. 11.03.18 81 0
238883 자바 고수형들 ㅠㅠ 뉴비가 질문좀 [12] 겔겔파워갤로그로 이동합니다. 11.03.18 119 0
238882 학학 왜 내가 3년전 했던 과목을 다시 들어야할까 [2] 어슐러르귄갤로그로 이동합니다. 11.03.18 123 0
238880 ☆이지스원,이지스원 시큐리티 교육센터 소개☆ [1] aegis1갤로그로 이동합니다. 11.03.18 58 0
238877 c++에서 %가머임? [4] 이모리아갤로그로 이동합니다. 11.03.18 96 0
238875 살려주세여. [2] 기타신동갤로그로 이동합니다. 11.03.18 90 0
238874 땡깡류 甲 ㄹㅇㄴ(210.178) 11.03.18 121 0
238873 닌텐도 WII의 위력 LightEach갤로그로 이동합니다. 11.03.18 80 0
238872 진짜 방송국들이 홈페이지 있는거처럼. [1] SODmaster갤로그로 이동합니다. 11.03.18 64 0
238871 대륙의 여자거지 [2] LightEach갤로그로 이동합니다. 11.03.18 173 0
238870 외쳐! [1] SODmaster갤로그로 이동합니다. 11.03.18 38 0
238868 c언어 초보인데 간단한거 하나만 물어볼게 [7] 형들(175.197) 11.03.18 130 0
238867 삼성역이나 선릉역에서 일하는 횽들에게 주는 정보 - 도시락 반값 쿠폰 [1] 쩐다(121.66) 11.03.18 97 0
238866 나는 7ㅐ발자다 [8] 에이스1번갤로그로 이동합니다. 11.03.18 267 0
238865 아 심심하다. 먹튀(203.249) 11.03.18 66 0
238862 안드로이드개발하다가 아이폰개발하면서 느낀게 .. [5] 임베디드(61.84) 11.03.18 181 0
238861 C프로그램 책으로만으로 공부 가능하냐? [10] ㅇㅇㅇㅇ(211.245) 11.03.18 266 0
238860 방금 들은 재밌는 이야기. [6] 물속의다이아갤로그로 이동합니다. 11.03.18 148 0
238859 여자는 어장관리해도 욕 안 먹는데, 남자는 욕 먹나? [3] ㅇㅇ(222.107) 11.03.18 195 0
238858 이젠 인쌥쎤 재밌다는 더이상 못하겠어... [1] Gromit갤로그로 이동합니다. 11.03.18 123 0
238857 너님들은 내가 보기엔... [4] 분당살람갤로그로 이동합니다. 11.03.18 121 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2