AcWing 1212. 地宫取宝
原题链接
中等
作者:
小.bug
,
2022-05-15 18:03:27
,
所有人可见
,
阅读 144
#include <bits/stdc++.h>
using namespace std;
const int N = 55;
const int P = 1000000007;
int f[N][N][15][15];
int n, m, k;
int g[N][N];
int main()
{
cin >> n >> m >> k;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
cin >> g[i][j];
g[i][j] ++;
}
}
f[1][1][1][g[1][1]] = 1;
f[1][1][0][0] = 1;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
for(int u = 0; u <= k; u ++)
{
for(int v = 0; v <= 13; v++)
{
int& t = f[i][j][u][v];
//不选
t = (t + f[i-1][j][u][v]) % P;
t = (t + f[i][j-1][u][v]) % P;
//选
if(v == g[i][j])
{
for(int c = 0; c < v; c++)
{
t = (t + f[i-1][j][u-1][c]) % P;
t = (t + f[i][j-1][u-1][c]) % P;
}
}
}
}
}
}
int res = 0;
for(int i = 1; i <= 13; i++) res = (res + f[n][m][k][i]) % P;
cout << res << endl;
return 0;
}