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

水果消除

时间:2017-05-31 19:01:23      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:open   ++   turn   dfs   选择   记录   分享   isp   维数   

问题 D: 水果消除

时间限制: 2 Sec  内存限制: 128 MB
提交: 271  解决: 117
[提交][状态][讨论版]

题目描述

“水果消除”是一款手机游戏,相信大家都玩过或玩过类似的游戏。

下面是“水果消除”游戏的一种初始状态。

消除的基本规则:如果有2个或2个以上的相同水果连在一起,则可以点选并消除。

请问在某一种状态下,有几种可以点选并消除的选择方案。

技术分享

 

例如,对于上图所示的初始状态,将有6种点选并消除的选择方案。这6种方案依次如下图所示。

技术分享         技术分享          技术分享

   

技术分享          技术分享          技术分享

 

输入

先输入一个整数n,表示放水果的格子总数为n*n。n取3到1000之间的整数(含3和1000)。

然后依次输入n*n个表示水果的数据,不同的水果用不同的数字表示,同一种水果用相同的数字表示。

表示水果的数字编号从1开始,不超过100。

输出

在输入数据对应的初始状态下,有几种点选并消除的选择方案。

输出方案数。

样例输入

6
1 1 2 2 2 2
1 3 2 1 1 2
2 2 2 2 2 3
3 2 3 3 1 1
2 2 2 2 3 1
2 3 2 3 2 2

样例输出

6
技术分享
 1 #include <cstdio>
 2 using namespace std;
 3 
 4 const int maxn=1001;
 5 int a[maxn][maxn];
 6 int n;
 7 int ans=0,step=0;
 8 
 9 void dfs(int x,int y)
10 {
11     int now=a[x][y];
12     a[x][y]=0;
13     for(int i=-1;i<=1;i+=2)
14     {
15         int fx=x;
16         int fy=y+i;
17         if(fx>0&&fx<=n&&fy>0&&fy<=n&&a[fx][fy]!=0&&a[fx][fy]==now)
18         {
19             step++;
20             dfs(fx,fy);
21         }
22     }
23     for(int i=-1;i<=1;i+=2)
24     {
25         int fx=x+i;
26         int fy=y;
27         if(fx>0&&fx<=n&&fy>0&&fy<=n&&a[fx][fy]!=0&&a[fx][fy]==now)
28         {
29             step++;
30             dfs(fx,fy);
31         }
32     }
33 }
34 
35 int main()
36 {
37 
38     scanf("%d",&n);
39     for(int i=1;i<=n;i++)
40         for(int j=1;j<=n;j++)
41     {
42         scanf("%d",&a[i][j]);
43     }
44     for(int i=1;i<=n;i++)
45         for(int j=1;j<=n;j++)
46     {
47         if(a[i][j]!=0)
48         {
49             step=0;
50             dfs(i,j);
51             if(step!=0)
52                 ans++;
53         }
54     }
55     printf("%d\n",ans);
56     return 0;
57 }
View Code

分析:用dfs进行遍历。一次遍历将点选能消除的水果的编号置为0,并用step+1记录消除的水果个数。当step等于0时不算能消除。然后以二维数组各个未遍历过的点为起点,能step不等于0的dfs遍历次数即为所求。

水果消除

标签:open   ++   turn   dfs   选择   记录   分享   isp   维数   

原文地址:http://www.cnblogs.com/onlyli/p/6925105.html

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