UVA 291(DFS)

题意:一笔画画出圣诞老人的房子,并按字典序输出。

思路:从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;
}

猜你喜欢

转载自blog.csdn.net/Dilly__dally/article/details/81455230
今日推荐