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千公尺以上。再比如說,馬路上偶遇乙個老同學,一...