"C로배우는 알고리즘."보신분..소스분석좀..

min2to의 이미지

도저히 모르겟네여.. 옛날책이라 그런지 소스가 ..
미로찾기 처음부분 입니다만..

#define UP 1
#define RIGHT 2
#define DOWN 4
#define LEFT 8

#define MAZE_SIZE 19
int maze[MAZE_SIZE] [MAZE_SIZE]=
"미로 모양 그림 가로 19 세로 19..."

int sx=MAZE_SIZE -1 , sy =MAZE_SIZE -2;// *생쥐출발위치*//

int get_shape(int m[][MAZE_SIZE], int x, int y)
{
static shape[] =
{ 32, 179, 196, 192, 179, 179, 218, 195, 196, 217, 196,
193, 191, 180, 194, 197 };

int s = 0;
if (m[y][x]) // {
if (y > 0 && m[y-1][x]) s |= UP; // if (y if (x > 0 && m[y][x-1]) s |= LEFT;
if (x }
return shape[s];
}

여기서 if(m[y][x]) 이게 무슨값을 받아오는지 선언되있는건 보입니다만...
가장 이해가 않되는건... if문안에 있는 m[y-1][x] 무엇을 의미하는지 정말 모르겟네여..
검색해봐도 않나오고 현재 죽어라 보고 있는데.. 도통 이런소스는 처음봐서..

가르켜주셨으면 해여 부탁드립니다..
낮부터 도서관서 빌려서 지금까지 보았는데... 모르겟습니다

min2to의 이미지

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

답변좀.. 해주세요;; 미치겟어여 ㅠㅠ

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

자룡의 이미지

get_shape 함수를 호출하는 부분이 없어서 정확하게는 모르겠네요.

아마 m[][] 은 미로의 형식을 저장하고 있는 2차원배열로 보입니다.
바둑판 생각하시면 되겠네요.
m[y][x] 는 바둑판의 세로로 y 번째 가로로 x 번째에 있는 칸을 나타내겠죠?

if (m[y][x]) 라는 구문은
해당 위치의 값이 1 이면.. 이 되겠구요.
1이면 Up 이니 Down 이니 하는걸 보면
아마 m[][] == 1 이면 갈수있는 길.. 정도로 보이네요.

if (y > 0 && m[y-1][x]) s |= UP;

이건 현재위치에서 m[y-1][x] 도 1 인지 확인해봅니다.
바둑판 현재위치에서 위쪽이 막혀있는지 뚫려있는지 보는거겠죠.
m[y-1][x] == 1 이면 참이니 위로도 갈수있다라고 표시해주기 위해
s |= UP 해주는걸로 보입니다.

아마 소스 중에 m[][] 을 초기화하는 부분이 있을겁니다.
초기값을 바탕으로 종이에 바둑판 그리듯 그려보시면 이해가 되실듯 하네요.

---

이글을 읽는 모든 이에게 평화가 함께 하기를... ^^;

-----
이글을 읽는 모든 이에게 평화가 함께 하기를... ^^;

min2to의 이미지

y 값과 x값과 m값의 정확한 숫자를 알고 싶은데... 그것만 알면 될꺼 같은데;.

모르는건 물어보라구 엄마 아빠가 알려주셧습니다
고수님,선배님들 도와주십쇼 독학하는 학생입니다

ed.netdiver의 이미지

trace해보심 되지 않겠어요?

\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

someone의 이미지

m에 들어있는 배열과 x,y의 값은
get_shape() 이 함수를 호출할때 주어지겠죠..
어딘가에서
m[0][0]=1;
m[0][1]=2;
m[1][0]=3;
m[1][1]=4;
get_shape(m,1,0);
이렇게 함수를 부르면

x값은 1, y값은 0
m[x][y]는 3 뭐 이런식으로 되겠죠...

user를 향해서... +_+

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.