308宿舍的鶸

一只鶸的博客

洛谷OJ: P1387 最大正方形(DP)

思路,只有当↖←↑这三个方向都是1时才能组成正方体,所以就能直接得到状态转移方程啦

dp[i][j] = min{dp[i-1][j-1], dp[i][j-1], dp[i-1][j]} + 1 (dp[i][j] != 0)

/**
 *	题目: 洛谷OJ P1387 最大正方形
 *	题型: DP
 **/
#include <cstdio>
#include <iostream>
using namespace std;

const int maxn = 100+10;
int dp[maxn][maxn], n, m, ans;

int main()  {
	/************input**************/
	cin >> n >> m;
	/*******************************/
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= m; j++) {
			cin >> dp[i][j];
			if(dp[i][j]) dp[i][j] += min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1]));
			ans = max(ans, dp[i][j]);
		}
	}
	cout << ans << endl;
	return 0;
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Elvis_code_t/article/details/79946255
个人分类: DP学习 洛谷OJ
上一篇洛谷OJ: P1508 Likecloud-吃、吃、吃
下一篇洛谷OJ: P1006 传纸条
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭