zoukankan      html  css  js  c++  java
  • poj3050【dfs】

    题意:
    5*5的矩阵里,某个点能够上下左右走,走5步,然后路径会形成一个串,问你,这个5*5里面能够形成多少个不同个串。
    思路:
    直接暴搜,然后对于一个串塞到set里去,然后输出set里的个数就好了

    #include<cstdio>
    #include<map>
    #include<set>
    #include<string>
    #include<queue>
    #include<math.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define eps 1e-8
    typedef __int64 LL;
    
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    string temp;
    set<string>ans;
    int a[6][6];
    
    void dfs(int x,int y,int num)
    {
        if(num==6)
        {
            ans.insert(temp);
            return;
        }
        for(int i=0;i<4;i++)
        {
            int xx=dx[i]+x;
            int yy=dy[i]+y;
            if(xx<0||yy<0||xx>=5||yy>=5)
                continue;
            temp.push_back(a[xx][yy]+'0');
            dfs(xx,yy,num+1);
            temp.resize(temp.size()-1);
        }
    }
    
    int main()
    {
        for(int i=0;i<5;i++)
            for(int j=0;j<5;j++)
            scanf("%d",&a[i][j]);
    
        for(int i=0;i<5;i++)
            for(int j=0;j<5;j++)
            {
                temp=a[i][j]+'0';
                dfs(i,j,1);
            }
        printf("%d
    ",ans.size());
        return 0;
    }
    
    
  • 相关阅读:
    第一周软件测试
    第八周
    第七
    安卓第六周作业
    安卓第五周
    第四周作业
    Jsp第十次作业
    Jsp第九次作业(带验证码的email)
    Jsp第八次作业
    Jsp第七次作业email
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934884.html
Copyright © 2011-2022 走看看