3.4 錦双哘喘訟箭
箭3.5 箔痴幸議恷玉揃抄?
孖勣箔譜柴匯倖麻隈孀匯訳貫痴幸秘笥欺竃笥議恷玉揃抄。云麻隈勣箔孀匯訳痴幸議恷玉揃抄?麻隈議児云房?葎?貫痴幸秘笥泣?1,1?竃窟??膨巓朴沫?芝和侭嗤匯化嬬欺器議恫炎泣?隼朔卆肝壅貫宸乂泣竃窟?壅芝和侭嗤匯化嬬欺器議恫炎泣?…?卆緩窃容?岷欺欺器痴幸議竃笥泣(m,n)葎峭?隼朔貫竃笥泣冽朴沫揃抄指翻岷崛秘笥。宸劔祥孀欺阻匯訳痴幸議恷玉揃抄?倦夸痴幸涙揃抄。
嗤購痴幸議方象潤更、編冥圭?、泌採契峭嶷鹸欺器蝶泣參閲窒窟伏棒儉桟議諒籾嚥箭3.2 侃尖屢揖?音揖議頁?泌採贋刈朴沫揃抄。壓朴沫狛殻嶄駅倬芝和耽匯倖辛欺器議恫炎泣?參宴貫宸乂泣竃窟写偬?膨巓朴沫。喇噐枠欺器議泣枠?和朴沫?絞哈序匯倖“枠序枠竃”方象潤更------錦双栖隠贋厮欺器議恫炎泣。欺器痴幸議竃笥泣(m,n)朔?葎阻嬬校貫竃笥泣冽朴沫揃抄指翻岷崛秘笥?斤噐耽匯泣?芝和恫炎泣議揖扮?珊勣芝和欺器乎泣議念駁泣?咀緩?喘匯倖潤更方怏sq[num]恬葎錦双議贋刈腎寂?咀葎痴幸嶄耽倖泣崛謹瓜恵諒匯肝?侭參num 崛謹吉噐m*n。sq 議耽匯倖潤更嗤眉倖囃?x,y 才pre?凪嶄x,y 蛍艶葎侭欺器議泣議恫炎?pre 葎念駁泣壓sq 嶄議恫炎?頁匯倖床蓑全囃。茅sq 翌?珊嗤錦遊、錦硫峺寞?front 才rear 喘栖峺?錦遊才錦硫圷殆。
錦議協吶泌和?
typedef struct
{ int x,y;
int pre;
}sqtype;
sqtype sq[num];
int front,rear;
兜兵彜蓑?錦双嶄峪嗤匯倖圷殆sq[1]芝村議頁秘笥泣議恫炎?1,1??咀葎乎泣頁竃窟泣?咀緩短嗤念駁泣?pre 囃葎?1?錦遊峺寞front 才錦硫峺寞rear 譲峺?万?緩朔朴沫扮脅頁參front 侭峺泣葎朴沫議竃窟泣?輝朴沫欺匯倖辛欺器泣扮?軸繍乎泣議恫炎式front 侭峺泣議了崔秘錦?音徽芝和阻欺器泣議恫炎?珊芝和阻万議念駁泣。front 侭峺泣議8倖圭?朴沫頼穎朔?夸竃錦?写偬斤和匯泣朴沫。朴沫狛殻嶄囑欺竃笥泣夸撹孔?朴沫潤崩?嬉咫竃痴幸恷玉揃抄?麻隈潤崩?賜宀輝念錦腎軸短嗤朴沫泣阻?燕苧短嗤揃抄麻隈匆潤崩。
麻隈泌和?
void path(maze?move)
int maze[m][n]?/*痴幸方怏*/
item move[8]?/*恫炎奐楚方怏*/
{ sqtype sq[NUM];
int front,rear?
int x,y,i,j,v;
front=rear=0;
sq[0].x=1; sq[0].y=1; sq[0].pre=-1; /*秘笥泣秘錦*/
maze[1,1]=-1;
while (front<=rear) /*錦双音腎*/
{ x=sq[front].x ; y=sq[front ].y ;
for (v=0;v<8;v++)
{ i=x+move[v].x; j=x+move[v].y;
if (maze[i][j]==0)
{ rear++;
sq[rear].x=i; sq[rear].y=j; sq[rear].pre=front;
maze[i][j]=-1;
}
if (i==m&&j==n)
{ printpath(sq,rear); /*嬉咫痴幸*/
restore(maze); /*志鹸痴幸*/
return 1;
}
} /*for v*/
front++; /*輝念泣朴沫頼?函和匯倖泣朴沫*/
} /*while*/
return 0;
} /*path*/
void printpath(sqtype sq[],int rear) /*嬉咫痴幸揃抄*/
{ int i;
i=rear;
do { printf(? (%d,%d)?,sq[i].x , sq[i].y) ;
i=sq[i].pre; /*指翻*/
} while (i!=-1);
} /*printpath*/
麻隈3.5
斤噐夕3.17?a?侭幣議痴幸朴沫狛殻泌夕才錦双嶄議方象泌夕3.17(a)、(b)侭幣。
塰佩潤惚? (6,8) (5,7) (4,6)(4,5) (3,4) (3,3) (2,2)(1,1)
壓貧中議箭徨嶄?音嬬寡喘儉桟錦双?咀葎壓云諒籾嶄?錦双嶄隠贋阻冥沫欺議揃抄會双?泌惚喘儉桟錦双?夸委枠念誼欺議揃抄會双顕固渠。遇壓嗤乂諒籾嶄?泌隔偬塰佩議糞扮酌陣狼由嶄?酌陣狼由坿坿音僅議辺欺酌陣斤嵆乏會窟栖議佚連泌烏少?葎阻隠隔烏少佚連議乏會來?祥勣梓乏會匯匯隠贋?遇宸乂佚連頁涙博謹倖?音辛嬬畠何揖扮廚藻坪贋?辛功象糞縞諒籾?譜柴匯倖癖輝寄議?楚腎寂?喘恬儉桟錦双?恷兜辺欺議烏少佚連匯匯秘錦?輝錦諾岻朔?嗽嗤仟議烏少欺栖欺扮?仟議烏少夸顕固渠阻症議烏少?坪贋嶄兵嶮隠隔輝念恷仟議飛孤訳烏少?參宴諾怎酔堀臥儂。
孖勣箔譜柴匯倖麻隈孀匯訳貫痴幸秘笥欺竃笥議恷玉揃抄。云麻隈勣箔孀匯訳痴幸議恷玉揃抄?麻隈議児云房?葎?貫痴幸秘笥泣?1,1?竃窟??膨巓朴沫?芝和侭嗤匯化嬬欺器議恫炎泣?隼朔卆肝壅貫宸乂泣竃窟?壅芝和侭嗤匯化嬬欺器議恫炎泣?…?卆緩窃容?岷欺欺器痴幸議竃笥泣(m,n)葎峭?隼朔貫竃笥泣冽朴沫揃抄指翻岷崛秘笥。宸劔祥孀欺阻匯訳痴幸議恷玉揃抄?倦夸痴幸涙揃抄。
嗤購痴幸議方象潤更、編冥圭?、泌採契峭嶷鹸欺器蝶泣參閲窒窟伏棒儉桟議諒籾嚥箭3.2 侃尖屢揖?音揖議頁?泌採贋刈朴沫揃抄。壓朴沫狛殻嶄駅倬芝和耽匯倖辛欺器議恫炎泣?參宴貫宸乂泣竃窟写偬?膨巓朴沫。喇噐枠欺器議泣枠?和朴沫?絞哈序匯倖“枠序枠竃”方象潤更------錦双栖隠贋厮欺器議恫炎泣。欺器痴幸議竃笥泣(m,n)朔?葎阻嬬校貫竃笥泣冽朴沫揃抄指翻岷崛秘笥?斤噐耽匯泣?芝和恫炎泣議揖扮?珊勣芝和欺器乎泣議念駁泣?咀緩?喘匯倖潤更方怏sq[num]恬葎錦双議贋刈腎寂?咀葎痴幸嶄耽倖泣崛謹瓜恵諒匯肝?侭參num 崛謹吉噐m*n。sq 議耽匯倖潤更嗤眉倖囃?x,y 才pre?凪嶄x,y 蛍艶葎侭欺器議泣議恫炎?pre 葎念駁泣壓sq 嶄議恫炎?頁匯倖床蓑全囃。茅sq 翌?珊嗤錦遊、錦硫峺寞?front 才rear 喘栖峺?錦遊才錦硫圷殆。
錦議協吶泌和?
typedef struct
{ int x,y;
int pre;
}sqtype;
sqtype sq[num];
int front,rear;
兜兵彜蓑?錦双嶄峪嗤匯倖圷殆sq[1]芝村議頁秘笥泣議恫炎?1,1??咀葎乎泣頁竃窟泣?咀緩短嗤念駁泣?pre 囃葎?1?錦遊峺寞front 才錦硫峺寞rear 譲峺?万?緩朔朴沫扮脅頁參front 侭峺泣葎朴沫議竃窟泣?輝朴沫欺匯倖辛欺器泣扮?軸繍乎泣議恫炎式front 侭峺泣議了崔秘錦?音徽芝和阻欺器泣議恫炎?珊芝和阻万議念駁泣。front 侭峺泣議8倖圭?朴沫頼穎朔?夸竃錦?写偬斤和匯泣朴沫。朴沫狛殻嶄囑欺竃笥泣夸撹孔?朴沫潤崩?嬉咫竃痴幸恷玉揃抄?麻隈潤崩?賜宀輝念錦腎軸短嗤朴沫泣阻?燕苧短嗤揃抄麻隈匆潤崩。
麻隈泌和?
void path(maze?move)
int maze[m][n]?/*痴幸方怏*/
item move[8]?/*恫炎奐楚方怏*/
{ sqtype sq[NUM];
int front,rear?
int x,y,i,j,v;
front=rear=0;
sq[0].x=1; sq[0].y=1; sq[0].pre=-1; /*秘笥泣秘錦*/
maze[1,1]=-1;
while (front<=rear) /*錦双音腎*/
{ x=sq[front].x ; y=sq[front ].y ;
for (v=0;v<8;v++)
{ i=x+move[v].x; j=x+move[v].y;
if (maze[i][j]==0)
{ rear++;
sq[rear].x=i; sq[rear].y=j; sq[rear].pre=front;
maze[i][j]=-1;
}
if (i==m&&j==n)
{ printpath(sq,rear); /*嬉咫痴幸*/
restore(maze); /*志鹸痴幸*/
return 1;
}
} /*for v*/
front++; /*輝念泣朴沫頼?函和匯倖泣朴沫*/
} /*while*/
return 0;
} /*path*/
void printpath(sqtype sq[],int rear) /*嬉咫痴幸揃抄*/
{ int i;
i=rear;
do { printf(? (%d,%d)?,sq[i].x , sq[i].y) ;
i=sq[i].pre; /*指翻*/
} while (i!=-1);
} /*printpath*/
麻隈3.5
斤噐夕3.17?a?侭幣議痴幸朴沫狛殻泌夕才錦双嶄議方象泌夕3.17(a)、(b)侭幣。
塰佩潤惚? (6,8) (5,7) (4,6)(4,5) (3,4) (3,3) (2,2)(1,1)
壓貧中議箭徨嶄?音嬬寡喘儉桟錦双?咀葎壓云諒籾嶄?錦双嶄隠贋阻冥沫欺議揃抄會双?泌惚喘儉桟錦双?夸委枠念誼欺議揃抄會双顕固渠。遇壓嗤乂諒籾嶄?泌隔偬塰佩議糞扮酌陣狼由嶄?酌陣狼由坿坿音僅議辺欺酌陣斤嵆乏會窟栖議佚連泌烏少?葎阻隠隔烏少佚連議乏會來?祥勣梓乏會匯匯隠贋?遇宸乂佚連頁涙博謹倖?音辛嬬畠何揖扮廚藻坪贋?辛功象糞縞諒籾?譜柴匯倖癖輝寄議?楚腎寂?喘恬儉桟錦双?恷兜辺欺議烏少佚連匯匯秘錦?輝錦諾岻朔?嗽嗤仟議烏少欺栖欺扮?仟議烏少夸顕固渠阻症議烏少?坪贋嶄兵嶮隠隔輝念恷仟議飛孤訳烏少?參宴諾怎酔堀臥儂。