题意:一笔画画出圣诞老人的房子,并按字典序输出。
思路:从1点DFS遍历图(八条边需要9画)
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int maxn=200005;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
int mat[6][6],vis[6][6];
void dfs(int x,int k,string s)//生成k长的s
{
s+=char('0'+x);
if(k==8)
{
cout<<s<<endl;
return;
}
for(int i=1;i<=5;i++)
{
if(mat[x][i]&&!vis[x][i])
{
vis[x][i]=vis[i][x]=1;
dfs(i,k+1,s);
vis[x][i]=vis[i][x]=0;
}
}
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
memset(mat,0,sizeof(mat));
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
if(i!=j)
{
mat[i][j]=1;
}
}
}
mat[1][4]=mat[4][1]=0,mat[2][4]=mat[4][2]=0;
dfs(1,1,"");
return 0;
}