X 國王有乙個地宮寶庫

2021-10-07 21:47:07 字數 1277 閱讀 3094

x 國王有乙個地宮寶庫。是 n x m 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。

地宮的入口在左上角,出口在右下角。

小明被帶到地宮的入口,國王要求他只能向右或向下行走。

走過某個格仔時,如果那個格仔中的寶貝價值比小明手中任意寶貝價值都大,小明就可以拿起它(當然,也可以不拿)。

當小明走到出口時,如果他手中的寶貝恰好是k件,則這些寶貝就可以送給小明。

請你幫小明算一算,在給定的局面下,他有多少種不同的行動方案能獲得這k件寶貝。

【資料格式】

輸入一行3個整數,用空格分開:n m k (1<=n,m<=50, 1<=k<=12)

接下來有 n 行資料,每行有 m 個整數 ci (0<=ci<=12)代表這個格仔上的寶物的價值

要求輸出乙個整數,表示正好取k個寶貝的行動方案數。該數字可能很大,輸出它對 1000000007 取模的結果。

例如,輸入:

2 2 2

1 22 1

程式應該輸出:

2再例如,輸入:

2 3 2

1 2 3

2 1 5

程式應該輸出:

14思路:

採用深度搜尋去檢索每一種方案,每個格仔上的物品如果大於自己擁有物品的最大值,可以選擇拿或不拿,選擇完後走右或走下。

遞迴結束條件,未到達終點所擁有物品已經超過k,或到達了出口

**:public class main9

} dfs(0, 0, -1, 0);

system.out.println(ans);

}/**

* * @param i 所在格仔的橫座標

* @param j 所在格仔的縱座標

* @param max 當前擁有的最大價值的寶貝的價值

* @param cnt 當前擁有寶貝的數量

*/private static void dfs(int i, int j, int max, int cnt)

//超出了邊界

if (i == n || j == m)

int price = map[i][j];

//處於出口,判斷當前是否滿足要求

if (i == n - 1 && j == m - 1)

return;

} //如果這個格仔的寶貝大於擁有的最大價值則可以拿

if (price > max)

dfs(i + 1, j, max, cnt);//不拿 下

dfs(i, j + 1, max, cnt);//不拿 右

}

有乙個地方

今天早上的比賽終於還是勇士獲得了勝利,當時是有點小情緒,不過還好,畢竟我是較中立的球迷,當然卻還是希望雷霆贏。籃球嘛已經體會很多了。今天世界上最失落的人之一會有杜蘭特和威少吧。晚上跑步在操場遇見了隔壁班的乙個女生,挺好的,因為終於能在操場看到自己喜歡的影子了,重點當然是我認識。最近在進行乙個是軟體工...

我有乙個女兒

去年的10.24,嫚兒出生了。自此我們倆有了乙個好閨女,我們很愛她。我是不太善於表達自己情感的,但是面對小嫚時我總能叭叭叭的講一大堆話,內容無非就是 嫚嫚,爸爸愛你 之類的,也有可能是小嫚現在還小的緣故,待她懂事後我可能就羞於表達了。日子一天天的過去,小嫚的每一點變化都能給我們帶來莫大的喜悅 喊出 ...

我有乙個秘密

size large 我有乙個秘密。我的腦子進水了。自從我的腦子水之後,我發現自己多了一些莫名其妙的特異能力。原創 比如說,北緯40度的乙個朋友,告訴我,他安裝了乙個軟體,我忽然就知道,他肯定在不開心。一問,果然。而我當時在北緯20度,空間距離在2000千公尺以上。再比如說,馬路上偶遇乙個老同學,一...