帮帮这个萌新,条了一整天了!
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int a[47][47],b[47][47];
int f[2][47][47][47][91];
int ans[47][47];
const int mod=998244353;
signed main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//freopen("P9743_7.in","r",stdin);
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>b[i][j];
}
}
f[1][1][0][0][0]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i!=1) f[i&1][j][0][0][0]=0;
for(int q=1;q<=k;q++)
{
for(int x=0;i+x<=n;x++)
{
for(int y=0;j+y<=m;y++)
{
int rs=mod;
if(x!=0&&q>=a[i][j]) rs+=f[i&1][j][x-1][y][q-a[i][j]];
if(y!=0&&q>=b[i][j]) rs+=f[i&1][j][x][y-1][q-b[i][j]];
if(x!=0&&y!=0&&q>=a[i][j]+b[i][j]) rs-=f[i&1][j][x-1][y-1][q-a[i][j]-b[i][j]];
if(i!=1) rs+=f[(i-1)&1][j][x+1][y][q];
if(j!=1) rs+=f[i&1][j-1][x][y+1][q];
f[i&1][j][x][y][q]=rs%mod;
if(q==k&&x==0&&y==0) ans[i][j]=rs%mod;
}
}
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<ans[i][j]<<" ";
}
cout<<'\n';
}
return 0;
}