题意:问从5*5的矩阵中选连续的6个组成的字符串有多少种
题解:dfs
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }