歷屆試題 地宮取寶 (dfs 記憶化)

2021-08-16 01:18:37 字數 2047 閱讀 4239

時間限制:1.0s 記憶體限制:256.0mb

問題描述

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 2

2 1

樣例輸出

2 樣例輸入

2 3 2

1 2 3

2 1 5

樣例輸出

14分析:

看到題目,第一感覺比較像數字塔(只能向右或向下走),然後到乙個位置後,若當前位置的物品價值大於之前所有的就可以選擇拿與不拿, 尋找最終到達右下角時物品總數等於k的方案數,這又像是用dp

資料範圍:n,m<=50,1#include

using namespace std;

#define mem(a,n) memset(a,n,sizeof(a))

#define memc(a,b) memcpy(a,b,sizeof(b))

#define rep(i,a,n) for(int i=a;i#define dec(i,n,a) for(int i=n;i>=a;i--)///[n,a]

#define pb push_back

#define fi first

#define se second

#define io ios::sync_with_stdio(false)

#define fre freopen("in.txt","r",stdin)

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

typedef long

long ll;

typedef unsigned long

long ull;

const

double pi=acos(-1.0);

const

double e=2.718281828459045;

const

double eps=1e-3;

const

int inf=0x3f3f3f3f;

const

int mod=1e9+7;

const

int n=50+5;

const ll maxn=1e6+5;

const

int dir[4][2]= ;

int n,m,k;

int dp[n][n][13][13];

int a[n][n];

int dfs(int x,int y,int cnt,int maxx)

if(x+1

<=n)///右行

///選擇不拿

num=(num+dfs(x+1,y,cnt,maxx))%mod;

}if(y+1

<=m)

///選擇不拿

num=(num+dfs(x,y+1,cnt,maxx))%mod;

}return ret=num;///記憶並返回

}int main()

mem(dp,-1);///初始化

printf("%d\n",dfs(1,1,0,-1));

}return

0;}

歷屆試題 地宮取寶 dfs 記憶化

歷屆試題 地宮取寶 時間限制 1.0s 記憶體限制 256.0mb 問題描述 x 國王有乙個地宮寶庫。是 n x m 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。地宮的入口在左上角,出口在右下角。小明被帶到地宮的入口,國王要求他只能向右或向下行走。走過某個格仔時,如果那個格仔中的寶貝價值...

歷屆試題 地宮取寶 記憶化搜尋

問題描述 x 國王有乙個地宮寶庫。是 n x m 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。地宮的入口在左上角,出口在右下角。小明被帶到地宮的入口,國王要求他只能向右或向下行走。走過某個格仔時,如果那個格仔中的寶貝價值比小明手中任意寶貝價值都大,小明就可以拿起它 當然,也可以不拿 當小...

歷屆試題 地宮取寶 簡單dfs

問題描述 x 國王有乙個地宮寶庫。是 n x m 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。地宮的入口在左上角,出口在右下角。小明被帶到地宮的入口,國王要求他只能向右或向下行走。走過某個格仔時,如果那個格仔中的寶貝價值比小明手中任意寶貝價值都大,小明就可以拿起它 當然,也可以不拿 當小...