디시인사이드 갤러리

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

갤러리 본문 영역

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

또비(14.51) 2011.03.13 19:41:06
조회 165 추천 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 - -
238888 꾹꾹 누르고 두들겨보라고! [2] SODmaster갤로그로 이동합니다. 11.03.18 107 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 80 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 95 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
238854 batch 질문 분뇨기갤로그로 이동합니다. 11.03.18 42 0
238853 MVC 패턴 어찌 생각하시나요 [3] 아땝갤로그로 이동합니다. 11.03.18 107 1
238852 일본 원전 전력 공급에 대한 생각 [2] iljeomobolt갤로그로 이동합니다. 11.03.18 102 0
238851 안드로이드 공부하는 irc채널 없나요 [1] 잉드로(175.205) 11.03.18 64 0
238850 자바 Robot 클래스에서요. [1] ㅋㄹ(61.4) 11.03.18 123 0
238848 아 전역하고 빠가되서 뭐하나만 물어봄 [3] 머신건팬더갤로그로 이동합니다. 11.03.18 79 0
238847 DMW형 말듣고 [2] 꿀레(14.33) 11.03.18 66 0
238846 프겔에서는 이제 글안쌀라구 했는데... [12] DMW갤로그로 이동합니다. 11.03.18 187 0
238844 대학다니기vs미쿡가기 (고민) [39] (221.139) 11.03.18 274 0
238843 형들... 이것좀크랙해주셍요ㅛㅛㅛㅛㅛ [5] 저질체력갤로그로 이동합니다. 11.03.18 81 0
238842 내 회로의 컨셉은 이러하다.. 꿀레(14.33) 11.03.18 57 0
238841 생각해보니깐 아우디 이긴게 자랑. [9] 캐닭(112.133) 11.03.18 99 0
238840 N드라이브 패킷 [1] 콰스갤로그로 이동합니다. 11.03.18 166 0
238839 요기 CSI 맹근애 있니 [2] 허니문베이비(222.237) 11.03.18 100 0
238838 [자바]Canvas위에 이미지를 얹었어요... [4] 레알좀급해(119.193) 11.03.18 255 0
238837 여자................................ [3] 캐닭(112.133) 11.03.18 106 0
238836 횽들 도와주세요 ㅠㅠㅠㅠㅠ openGL 입니다ㅠㅠㅠㅠㅠㅠㅠㅠㅠ [1] ㅠㅠㅠㅠㅠ(210.113) 11.03.18 86 0
238835 내일 선대가 2시간이네 [6] elwlwlwk갤로그로 이동합니다. 11.03.18 76 0
238833 자바 과제 질문 본격적으로 갈게. [18] 아씨발꿈(220.87) 11.03.18 205 0
238832 파일입출력 질문!!!!!!!!!!! [1] ㅇㄴㄹ(210.124) 11.03.18 87 0
238830 질문이하나더있는데 [10] 질문이있는데갤로그로 이동합니다. 11.03.18 85 0
238829 금융공학말이야 [1] (118.176) 11.03.18 85 0
238828 유럽이야말로 프로그래머에게는 안전한 기회의 땅이다.jpg [1] ㅇㅇ(222.107) 11.03.18 206 0
238826 데이터베이스 배우고싶은데 my-sql이 공짜라며ㅠㅠ [2] 이든(175.205) 11.03.18 95 0
238825 게임막아 놓은거 우회 하는법좀 갈켜 주세요 [4] ㅠㅠ(203.207) 11.03.18 190 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2