[問題] 找兩點間所有路徑(使用遞迴)
程式碼:http://nopaste.csie.org/3cb98
我用暴力法(使用遞迴)寫一個找兩點間所有路徑的程式
剛開始用dev c跑16個點時都沒錯
但是跑20個點沒跑完程式就關掉了
之後用visual c++去跑
才知道是stack overflow的問題
請問我該怎解決?
void dfs1(int s,int d,int stack_index,int visit_index){
while(visit_index<SIZE){
if(map[s][visit_index]==1 && visit[visit_index]!=-1){//鄰點且沒走過
stack[stack_index]=visit_index;//加入
stack_index=stack_index+1;
visit[visit_index]=-1;//標記走過
if(visit_index==d){
output(stack_index);
visit[visit_index]=0;
stack_index=stack_index-1;
//cout<<stack_index;
}
else{
dfs1(visit_index,d,stack_index,0);//找鄰點
break;
}
}
visit_index++;
}
if(visit_index==SIZE){
stack_index=stack_index-1;
visit[s]=0;
if(stack_index!=0){
dfs1(stack[stack_index-1],d,stack_index,s+1);
//break;
}
}
}
請問找兩點間所有路徑的方法
有辦法用非遞迴方式嘛?
因為我只想到這個方式而已...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.206.48
※ 編輯: pkpkgod 來自: 114.44.206.48 (05/27 20:05)
→
05/27 20:07, , 1F
05/27 20:07, 1F
→
05/27 20:30, , 2F
05/27 20:30, 2F
→
05/27 20:45, , 3F
05/27 20:45, 3F
→
05/27 20:46, , 4F
05/27 20:46, 4F
→
05/27 20:51, , 5F
05/27 20:51, 5F
→
05/27 20:54, , 6F
05/27 20:54, 6F
→
05/27 20:55, , 7F
05/27 20:55, 7F
→
05/27 21:05, , 8F
05/27 21:05, 8F
→
05/27 21:05, , 9F
05/27 21:05, 9F
→
05/27 21:16, , 10F
05/27 21:16, 10F
→
05/27 21:39, , 11F
05/27 21:39, 11F
→
05/27 21:50, , 12F
05/27 21:50, 12F
→
05/27 21:51, , 13F
05/27 21:51, 13F
※ 編輯: pkpkgod 來自: 114.44.206.48 (05/27 21:55)
推
05/27 21:53, , 14F
05/27 21:53, 14F
推
05/27 21:55, , 15F
05/27 21:55, 15F
推
05/30 21:06, , 16F
05/30 21:06, 16F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章