代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod = 1e9 + 7;
int N, M, K;
int mp[55][55];
ll dp[55][55][22][22];
void dfs(int st, int en, int num, int val) {
if(dp[st][en][num][val] != -1) return;
dp[st][en][num][val] = 0;
if(st == N && en == M && num == K) {
dp[st][en][num][val] = 1;
return;
}
if(mp[st][en] > val && num < K) {
dfs(st, en, num + 1, mp[st][en]);
dp[st][en][num][val] += dp[st][en][num + 1][mp[st][en]];
dp[st][en][num][val] %= mod;
}
if(st < N) {
dfs(st + 1, en, num, val);
dp[st][en][num][val] += dp[st + 1][en][num][val];
dp[st][en][num][val] %= mod;
}
if(en < M) {
dfs(st, en + 1, num, val);
dp[st][en][num][val] += dp[st][en + 1][num][val];
dp[st][en][num][val] %= mod;
}
}
int main() {
memset(dp, -1, sizeof(dp));
scanf("%d%d%d", &N, &M, &K);
for(int i = 1; i <= N; i ++) {
for(int j = 1; j <= M; j ++)
scanf("%d", &mp[i][j]);
}
dfs(1, 1, 0, 0);
printf("%lld\n", dp[1][1][0][0] % mod);
return 0;
}
FH dp 是魔鬼