poj3050 Hopscotch

思路:对每一个格子来一个DFS,每个DFS跳五步

代码如下:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <set>
 5 
 6 using namespace std;
 7 
 8 int maze[5][5];
 9 int dx[4]={1,-1,0,0};
10 int dy[4]={0,0,1,-1};
11 set<int> st;
12 
13 void dfs(int x,int y,int k,int num){
14     if(k==5){
15         st.insert(num); return;
16     }
17     for(int i=0;i<4;i++){
18         int nx = x+dx[i], ny = y+dy[i];
19         if(0<=nx&&nx<5&&ny>=0&&ny<5){
20             k++;
21             dfs(nx,ny,k,num*10+maze[nx][ny]);
22             k--;
23         }
24     }
25 }
26 
27 void solve(){
28     for(int i=0;i<5;i++){
29         for(int j=0;j<5;j++){
30             scanf("%d",&maze[i][j]);
31         }
32     }
33     for(int i=0;i<5;i++){
34         for(int j=0;j<5;j++){
35             dfs(i,j,0,maze[i][j]);
36         }
37     }
38     printf("%d\n", st.size());
39 }
40 
41 int main(){
42     solve();
43     return 0;
44 }
View Code

 

posted @ 2019-11-29 07:33  xiongbing  阅读(162)  评论(0编辑  收藏  举报