POJ 3050

题意:问从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 }

你可能感兴趣的:(poj)