求助30分,实在调不出来了
查看原帖
求助30分,实在调不出来了
417018
dark_moon楼主2023/10/17 22:42
#include<bits/stdc++.h>
#define int long long
using namespace std;
auto read = [](){
	int x;
	scanf("%lld", &x);
	return x;
};
const int MOD = 998244353;
int n = read(), m = read(), sk = read(), a[50][50], b[50][50], f[3][50][50][50][95];
signed main(){
//	freopen("1.out", "w", stdout);
	for(int i = 1; i <= n; i ++){
		for(int j = 1; j <= m; j ++)
		a[i][j] = read();
	}
	for(int i = 1; i <= n; i ++){
		for(int j = 1; j <= m; j ++)
		b[i][j] = read();
	}
	f[1][1][0][0][0] = 1;
	for(int i = 1; i <= n; i ++){
		for(int j = 1; j <= m; j ++){
			for(int k = 0; k <= n - i; k ++){
				for(int l = 0; l <= m - j; l ++){
					for(int o = 0; o <= sk; o ++){
						if(a[i][j] + o <= sk && k < n - i)
						(f[i % 3][j][k + 1][l][o + a[i][j]] += f[i % 3][j][k][l][o]) %= MOD;
					}
				}
			}
			
			for(int k = 0; k <= n - i; k ++){
				for(int l = 0; l <= m - j; l ++){
					for(int o = 0; o <= sk; o ++){
						if(b[i][j] + o <= sk && l < m - j)
						(f[i % 3][j][k][l + 1][o + b[i][j]] += f[i % 3][j][k][l][o]) %= MOD;
					}
				}
			}
			
			for(int k = n - i; k >= 0; k --){
				for(int l = m - j; l >= 0; l --){
					for(int o = 0; o <= sk; o ++){
						if(k > 0 && i < n)
						(f[(i + 1) % 3][j][k - 1][l][o] += f[i % 3][j][k][l][o]) %= MOD;
						if(l > 0 && j < m)
						(f[i % 3][j + 1][k][l - 1][o] += f[i % 3][j][k][l][o]) %= MOD;
					}
				}
			}
			
			printf("%lld ", f[i % 3][j][0][0][sk]);
			
		}
		printf("\n");
		
		
		for(int j = 1; j <= m; j ++){
			for(int k = 0; k <= n - i; k ++){
				for(int l = 0; l <= m - j; l ++){
					for(int o = 0; o <= sk; o ++)
					f[i % 3][j][k][k][o] = 0;
				}
			}
		}
	}
	return 0;
}
2023/10/17 22:42
加载中...