28pts求调,悬关
查看原帖
28pts求调,悬关
681941
OIer_Hhy楼主2025/8/5 12:11
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=52,K=13,p=1e9+7;
int n,m,k,a[N][N],f[N][N][K][K];
signed main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) cin>>a[i][j];
	}
	f[1][1][0][0]=f[1][1][1][a[1][1]]=1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(i+j==2) continue;
			for(int u=0;u<=k;u++){
				for(int v=0;v<6;v++){
					if(v==a[i][j]){
						for(int w=0;w<=a[i][j];w++){
							if(w!=a[i][j]) f[i][j][u][v]+=f[i-1][j][u-1][w]+f[i][j-1][u-1][w];
							else if(w==a[i][j]) f[i][j][u][v]+=f[i-1][j][u][w]+f[i][j-1][u][w];
						}
					}else{
						f[i][j][u][v]+=f[i-1][j][u][v]+f[i][j-1][u][v];
					}
					f[i][j][u][v]%=p;
				}
			}
		}
	}
	int ans=0;
	for(int i=0;i<13;i++)
		ans+=f[n][m][k][i];
	ans%=p;
	cout<<ans<<'\n';
	return 0;
}

2025/8/5 12:11
加载中...