問題 D 水果消除 DFS 水題

2021-07-13 22:09:46 字數 1819 閱讀 3356

問題 d: 水果消除

時間限制: 2 sec 記憶體限制: 128 mb

提交: 188 解決: 71

[提交][狀態][討論版]

題目描述

「水果消除」是一款手機遊戲,相信大家都玩過或玩過類似的遊戲。

下面是「水果消除」遊戲的一種初始狀態。

消除的基本規則:如果有2個或2個以上的相同水果連在一起,則可以點選並消除。

請問在某一種狀態下,有幾種可以點選並消除的選擇方案。

例如,對於上圖所示的初始狀態,將有6種點選並消除的選擇方案。這6種方案依次如下圖所示。

輸入 先輸入乙個整數n,表示放水果的格仔總數為n*n。n取3到1000之間的整數(含3和1000)。

然後依次輸入n*n個表示水果的資料,不同的水果用不同的數字表示,同一種水果用相同的數字表示。

表示水果的數字編號從1開始,不超過100。

輸出在輸入資料對應的初始狀態下,有幾種點選並消除的選擇方案。

輸出方案數。

樣例輸入

61 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提示

//求連通塊,如果連通塊已經有2個 則方案數+1

#include

int a[1001][1001];

int b[1001][1001]={};

char c[1000002]={};

int n,ans=0; //計數

void dfs(int i,int j,int ans,int id)

//過程中計數

dfs(i-1,j,ans,id);

dfs(i,j-1,ans,id); dfs(i,j+1,ans,id);

dfs(i+1,j,ans,id);

}void handle()

int main()

// for(int i=1;i<=n;i++,putchar('\n'))

// for(int j=1;j<=n;j++) printf("%d ",a[i][j]);

//printf("**

****

****

****

****

****

*limit1

****

****

****

****

****

***\n");

春季聯賽,dfs水題(思路)

對於n 個數,從中取出 m個數,如何取使得這 m個數的乘積最大呢?第一行乙個數 t表示資料組數。每組輸入資料共2行 第1行有 2個整數n m,1 m n 15,第2 行有n個整數,其中每個數的絕對值小於等於4。對每組資料,輸出 1行,為最大的乘積值。15 51 2 3 4 248 向倫神學習簡潔的 ...

hdu 5423 樹上dfs 水題

給你一顆樹,問是否存在節點深度全部相同但存在某個節點的父親不同的 求每乙個深度的節點個數,只要存在乙個深度有超過乙個的節點並且下乙個深度有節點存在,就滿足了上述的條件 include include include include include include include include in...

D 棋盤問題 dfs經典題 poj1321

在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將...