题意:问从5*5的矩阵中选连续的6个组成的字符串有多少种

题解:dfs

View Code
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<set>
 5 using namespace std;
 6 int map[6][6];
 7 set<int> ss;
 8 void dfs(int x,int y,int res,int k)
 9 {
10     if(k==6)
11     {
12         ss.insert(res);
13         return;
14     }
15     res=res*10+map[x][y];
16     if(x>1)
17         dfs(x-1,y,res,k+1);
18     if(x<5)
19         dfs(x+1,y,res,k+1);
20     if(y>1)
21         dfs(x,y-1,res,k+1);
22     if(y<5)
23         dfs(x,y+1,res,k+1);
24 }
25 int main()
26 {
27     ss.clear();
28     for(int i=1;i<=5;i++)
29         for(int j=1;j<=5;j++)
30             scanf("%d",&map[i][j]);
31     for(int i=1;i<=5;i++)
32         for(int j=1;j<=5;j++)
33             dfs(i,j,0,0);
34     printf("%d\n",ss.size());
35     return 0;
36 }