線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:832
推到 Plurk!
推到 Facebook!

關於DFS 想請問邏輯問題

尚未結案
spring1201
一般會員


發表:3
回覆:1
積分:0
註冊:2010-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-05-26 20:04:33 IP:114.44.xxx.xxx 訂閱
我用DFS的方法要找兩點間的所有path
16個點可以跑,但點變多
程式跑一半就關掉了
想問我df1這個function有哪邊寫錯

[code cpp]
#include
#include
#define SIZE 16
using namespace std;
int map[SIZE][SIZE] = {{0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0},
{1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0},
{1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0},
{0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0},
{1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0},
{0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1},
{0,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0},
{0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,0},
{1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0},
{0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1},
{0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0},
{0,1,0,0,0,0,0,0,0,1,1,0,0,1,0,0},
{0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0},
{0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1},
{0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1},
{0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,0}};

int visit[SIZE];//判斷點有無走過
int stack[SIZE];//存路徑
void dfs(int s,int d,int stack_index);
void dfs1(int s,int d,int stack_index,int visit_index);
void output(int stack_index);
//ofstream fout("output.txt");

int main(void){

int source,destination;

cout<<"source:";
cin>>source;
cout<<"destination:";
cin>>destination;
dfs(source,destination,0);

//fout.close();
system("pause");
return 0;
}
void dfs(int s,int d,int stack_index){

if(visit[s]!=-1){
stack[stack_index]=s;//加入
stack_index=stack_index 1;
visit[s]=-1;//標記走過
dfs1(s,d,stack_index,0);//找鄰點
}
}
void dfs1(int s,int d,int stack_index,int visit_index){//找鄰點

while(visit_index 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< }
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;
}
}
}
void output(int stack_index){
//if(stack_index==8){
for(int i=0;i cout<<<" ";
}
cout<}<!--YSM BEGIN(1)--> [/code]
附加檔案:4bfd0e513476c_graph.cpp
編輯記錄
spring1201 重新編輯於 2010-05-26 23:01:41, 註解 無‧
系統時間:2024-04-26 6:00:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!