1212. 地宫取宝

#include <bits/stdc++.h>
using namespace std;
const int N = 55, MOD = 1000000007;
int n, m, k;
//i, j, 个数, 最大值
int dp[N][N][13][14];
int w[N][N];
signed main(){
cin >> n >> m >> k;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j){
cin >> w[i][j]; ++w[i][j];
}
}
dp[1][1][0][0] = 1;
dp[1][1][1][w[1][1]] = 1;
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= m; ++j){
for(int cnt = 0; cnt <= k; ++cnt){
for(int val = 0; val <= 13; ++val){
int &t = dp[i][j][cnt][val];
t = (t + dp[i-1][j][cnt][val]) % MOD;
t = (t + dp[i][j-1][cnt][val]) % MOD;
if(cnt > 0 && val == w[i][j]){
for(int v = 0; v < val; ++v){
t = (t + dp[i-1][j][cnt-1][v]) % MOD;
t = (t + dp[i][j-1][cnt-1][v]) % MOD;
}
}
}
}
}
}
long long res = 0;
for(int i = 1; i <= 13; ++i) res = (res + dp[n][m][k][i]) % MOD;
cout << res << endl;
return 0;
}