AcWing 1212. 地宫取宝
原题链接
中等
作者:
Aliiina_z
,
2025-03-24 22:03:07
·广东
,
所有人可见
,
阅读 1
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,k;
const int N = 60;
int v[N][N];
const int mod = 1000000007;
int f[N][N][15][15];
int main()
{
cin >> n >> m >> k;
for (int i = 1; i<=n; i++)
{
for (int j = 1; j <=m; j++)
{
cin >> v[i][j];
v[i][j]++;
}
}
f[1][1][1][v[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 w = 0; w <= 13; w++)
{
int &val = f[i][j][u][w];
val = (val + f[i][j-1][u][w]) % mod;
val = (val + f[i-1][j][u][w]) % mod;
if (u > 0 && w == v[i][j])
{
for (int c = 0; c < w; c++)
{
val = (val + f[i][j-1][u-1][c]) % mod;
val = (val + f[i-1][j][u-1][c]) % mod;
}
}
}
}
}
}
int ans = 0;
for (int i = 1; i <= 13; i++) ans = (ans + f[n][m][k][i])% mod;
printf("%d", ans);
return 0;
}