标签:length 遍历 int comment white ati set blog 错误
关于深度优先搜索的总结;
1 dfs 的基本结构:
void dfs(int x){
if( x 超出边界){
return ;
}else{
for(遍历){
if(未访问过){
访问 ;
打上标记 ;
dfs(x + 1) ;
去掉标记 ; //极易忘记
}
}
}
return;
}
2 用dfs求全排列:
本来好好的,结果sizeof(pointer) 就完蛋了。神秘的内存错误,而且还能正常的跑出一个不正常的结果出来。
想了解sizeof这个小妖精的看这里 http://blog.csdn.net/wzy198852/article/details/7246836#comments
bool generatePermutations(int x){
int * flags = (int *)malloc(sizeof(int) * (x + 1));
int * ans = (int *)malloc(sizeof(int) * (x + 1));
memset(flags, 0, sizeof(int) * (x + 1)); // wo bei ken de hao ku a
memset(ans, 0, sizeof(int) * (x+1));
dfs(flags, ans, 1, x+1);
return true;
}
void dfs(int* book, int* ans, int step, int length){
if(step >= length){
for(int i=1; i<length; ++i){
cout << ans[i] << " ";
}
cout << endl;
return ;
}else{
for(int i=1; i<length; ++i){
if(book[i] == 0){
ans[step] = i;
book[i] = 1;
dfs(book, ans, step+1, length);
book[i] = 0;
}
}
}
return ;
}
3 我还要继续改下去
深度优先搜索(dfs)
标签:length 遍历 int comment white ati set blog 错误
原文地址:http://www.cnblogs.com/zzusunjs/p/6687128.html