水果消除

问题 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 }

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

时间: 2024-10-25 09:50:18

水果消除的相关文章

有什么办法可以消除眼袋吗?

有什么办法可以消除眼袋吗? 消除眼带缓解疲劳,去除黑眼圈的方法如下: 眼袋 一.开闭眼运动:双眼上下瞪要有意识地进行开合开启,每天坚持做100至150次左右,使眼瞪肌有收缩与放松的感,再配以闭目养神和眼部按摩,效果更佳. 二.盐水药棉热敷:在一杯热水中放一茶匙盐,闭上双眼,将盐水药棉热敷于眼袋上.反复多次,数日后可望眼袋逐渐缩小以至消失. 黑眼圈 一.原因: 黑眼圈是一种常见的困扰它会让人看起来很疲倦没精神,很多人想要去之而后快,到底为什幺会有黑眼圈呢?黑眼圈又该如何来预防.治疗呢? 根据一九九

【营养健康】哪七种水果可对抗肌肤过敏

草莓 草莓属浆果,含糖量高达6%-10%,并含多种果酸.维他命及矿物质等,可增强皮肤弹性,具有增白和滋润保湿的功效.另外,草莓比较适合于油性皮肤,具有去油.洁肤的作用,将草莓挤汁可作为美容品敷面.现在的很多清洁和营养面膜中也加入了草莓的成分,适合于任何肤质.经常使用草莓美容,可令皮肤清新.平滑,避免色素沉着.草莓中还含有丰富的维他命A和钾质,对头发的健康很有利.入睡前饮一杯草莓汁还能令神经松弛,对治疗失眠效果不错. 樱桃 樱桃是含铁及胡萝卜素较多的一种水果,它的营养非常丰富,对气血较虚的人能起到

水果顺时养生:拒绝反季节水果

现在一些水果四季都能见到,人们也热衷于在这些反季节的水果,然而很多反季节水果是用一些化学物质催熟.保鲜的,不但营养价值不高,还会给身体带来危害. 中医讲究顺时养生,在适当的季节做适当的事,吃适当的食物,专家提示,远离反季节水果很简单,就是吃应季的.当季的水果,不仅新鲜,营养也更加丰富. 一月:猕猴桃 猕猴桃素有“果中之王”的美誉,是老年人.儿童.体弱多病者的滋补果品.猕猴桃不要与牛奶同食.另外,猕猴桃性寒,不宜多食,脾胃虚寒者应慎食,腹泻者不宜食用,先兆性流产.月经过多和尿频者忌食. 二月:甘蔗

男性消除疲劳的零食有哪些呢

1.供给能量的食物:饼干.巧克力 饼干的主要成分是小麦,它提供的能量来自其碳水化合物的含量.早餐中,普通饼干.黄油饼干或是专用于早餐的饼干所提供的能量能够保证人们一直到午饭时都精力充沛.如果再吃一个水果.一个鸡蛋.喝一杯牛奶,消泡王,就是一个完整而且能量充足的早餐,保证你一上午都精力充沛.下午的茶点,吃几块饼干巧克力和喝一杯饮料,可以使你以饱满的工作热情一直持续到下午下班. 2.优秀的能量补充剂:干果 平时我们在进行体力(远足.打网球等)和脑力活动之后,常常觉得十分疲劳,这时你可在口中嚼些花生.

世界公认的健康水果大排名!第一名居然是……

世界公认的健康水果大排名!第一名居然是-- 2016-03-11 水果,相信很多人都喜欢吃,但是你知道世界上公认的十大水果排名吗?下面就跟大家科普一下,健康水果排名,越吃越健康! 1.梨 梨子自古被推尊为"百果之宗". 味甘微酸.性寒.无毒.可以止咳.润肺凉心.消炎降火.解痰毒酒毒之功效.梨子含有充足水分.及一些葡萄糖.蔗糖和维生素A.B.C.D.E并能提供纤维素和钙.磷.铁.碘.钾等微量元素. 梨治鸡眼: 用适量梨榨成汁喝,也可用果渣同汁一起敷在患处.大概7~10天便可减轻症状. 梨

日入过百优质消除手游数据分享—萌萌哒包子脸爱消除(游戏开发引擎:libgdx)

从2014年开始,消除游戏异常火爆,从消除小星星到腾讯的天天消除都赢得了海量用户.目前,各大市场上开心消消乐等游戏依旧火爆.消除游戏一直持续保持着女性和孩子的主流游戏地位.虽然市场上消除游戏种类很多,玩法也不少,但是经典玩法仍是主流.本游戏使用的是最经典的玩法加扩展,亮点是提供了强大的游戏关卡编译器,可以不断完善和创新新的关卡与玩法! 本源码适合有一定App运营经验的人,当然如果你只是为了学习又不差这点钱,这也将是一个非常不错的选择.本源码出售性质为买断性出售,意思是我只会卖1次,这和那些卖了无

策略模式+工厂方法消除if...else

今天来讲一下如何通过策略模式和工厂方法来消除累赘的if...else,具体什么是策略模式,大家可以自行百度学习,我就不再这里做过多的介绍了. 注意:如果业务场景简单,建议使用if...else,因为代码逻辑简单,便于理解 策略接口 Eat.java /** * 策略接口 * */ public interface Eat { public void eatFruit(String fruit); } 策略类 EatApple.java /** * 具体的策略类:吃苹果 */ public cla

国外必须具备的水果词汇

pineapple 凤梨 watermelon 西瓜 papaya 木瓜 betelnut 槟榔 chestnut 栗子 coconut 椰子 ponkan 碰柑 tangerine 橘子 mandarin orange 橘 sugar-cane 甘蔗 Cantalope melon 香瓜 shaddock 文旦 juice peach 水蜜桃 pear 梨子 peach 桃子 carambola 杨桃 cherry 樱桃 persimmon 柿子 apple 苹果 mango 芒果 fig 无

消除textarea的空格de长度值

在项目中因为用到文本域textarea输入textarea的长度总是显示 25 那是还怀疑textarea自带有value长度? placeholder属性的长度? 那时候想到类似:ul无序列表li元素浮动float 运用css属性添加:font-size:0;消除那间隔!可是, 一试用不对劲,直接把文本域的文字也font-size:0,字体都无法显示了,真是奇怪??? 按道理 标签的间 #text 文本节点 不是合并成一个空格的?为何textarea这么神奇 ,还25个? 后来,只有乖乖用缩进