分析:DFS即可。
#include<iostream> using namespace std; bool map[21][21]; bool vis[21]; int ans[21],num,m; void init() { int i,a; memset(map,false,sizeof(map)); for(i=1;i<=20;i++) //构图 { map[i][cin>>a,a]=true; map[i][cin>>a,a]=true; map[i][cin>>a,a]=true; } } void dfs(int d,int x,int s) { int i; ans[d]=x; if(d==19) { if(!map[x][m]) return ; cout<<++num<<": "; for(i=0;i<=d;i++) cout<<" "<<ans[i]; cout<<" "<<ans[0]<<endl; return ; } for(i=1;i<=20;i++) if(map[x][i] && !vis[i]) { vis[i]=true; dfs(d+1,i,s); vis[i]=false; } } int main() { ios::sync_with_stdio(false); init(); while(cin>>m && m) { memset(vis,false,sizeof(vis)); num=0; vis[m]=true; dfs(0,m,m); } return 0; }
时间: 2024-10-18 23:06:02