……

UVa 291 The House Of Santa Claus——回溯dfs

题意:从左下方的1开始,一笔画出圣诞老人的房子。

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 int edge[6][6];
 5 
 6 //已画了k条边 准备将端点x加入进来
 7 void dfs(int x,int k,string s){
 8     s+=char(x+'0');
 9     if(k==8){
10         cout<<s<<endl;
11         return;
12     }
13     for(int y=1;y<=5;y++){
14         if(edge[x][y]){
15             edge[x][y]=edge[y][x]=0;
16             dfs(y,k+1,s);
17             edge[x][y]=edge[y][x]=1;
18         }
19     }
20 }
21 int main(){
22     memset(edge,0,sizeof(edge));
23     for(int i=1;i<=5;i++){
24         for(int j=1;j<=5;j++){
25             if(i!=j)
26                 edge[i][j]=1;
27         }
28     }
29     edge[4][1]=edge[1][4]=0;//1、4  2、4不相连
30     edge[4][2]=edge[2][4]=0;
31     dfs(1,0,"");
32     return 0;
33 }

 

posted @ 2019-01-30 23:17  noobimp  阅读(167)  评论(0编辑  收藏  举报