P11248 20分求调
查看原帖
P11248 20分求调
1421577
zhoujq123456楼主2025/6/27 21:10

20分求调

题目

#include<bits/stdc++.h>
using namespace std;
int dp[505][505][305];
int n, m, x;
char a[505][505];
int main() {
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	int t;
	cin >> t;
	while (t--) {
		cin >> n >> m >> x;
		memset(dp, 0, sizeof dp);
		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) {
				for (int k = 0; k <= x; ++k) {
					if (a[i][j] == '0') {
						dp[i][j][k] = max(dp[i][j][k], max(dp[i - 1][j][k], dp[i][j - 1][k]));
					} else if (a[i][j] == '1') {
						dp[i][j][k] = max(dp[i][j][k], max(dp[i - 1][j][k], dp[i][j - 1][k]) + 1) ;
					} else if (k >= 1) {
						dp[i][j][k] = max(dp[i][j][k], max(dp[i - 1][j][k - 1], dp[i][j - 1][k - 1]) + 1);
					}
				}
			}
		}
		int ans = 0;
		for (int i = 0; i <= x; ++i) {
			ans = max(ans, dp[n][m][i]);
		}
		cout << ans << '\n';
	}
	return 0;
}
2025/6/27 21:10
加载中...