码迷,mamicode.com
首页 > 其他好文 > 详细

【深搜+set使用学习】POJ3050-Hopscotch

时间:2015-08-18 11:34:19      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

【题目大意】

给出一个5*5的方格,求出从任意一点出发走6步组成的不同序列数。

【思路】

dfs的水题,当作set使用方法的初次学习。每次从任意一点出发进行一次dfs,将序列加入set,最后输出set.size()即可。

 1 #include<iostream>
 2 #include<cstring>
 3 #include<set>
 4 using namespace std;
 5 int map[6][6];
 6 int dx[4]={0,0,1,-1};
 7 int dy[4]={1,-1,0,0};
 8 set<int> s;
 9 
10 void dfs(int x,int y,int step,int sum)
11 {
12     if (step==6) 
13     {
14         s.insert(sum);
15         return;
16     }
17     for (int i=0;i<4;i++)
18     {
19         int nowx=x+dx[i],nowy=y+dy[i];
20         if (nowx<0 || nowy<0 || nowx>=5 || nowy>=5) continue;
21         dfs(nowx,nowy,step+1,sum*10+map[nowx][nowy]);
22     }
23 }
24 
25 int main()
26 {
27     for (int i=0;i<5;i++)
28         for (int j=0;j<5;j++) scanf("%d",&map[i][j]);
29     for (int i=0;i<5;i++)
30         for (int j=0;j<5;j++)
31             dfs(i,j,1,map[i][j]);
32     cout<<s.size()<<endl;
33     return 0;
34 }

 

【深搜+set使用学习】POJ3050-Hopscotch

标签:

原文地址:http://www.cnblogs.com/iiyiyi/p/4738787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!