|Vijos|动态规划|P1057 盖房子

https://vijos.org/p/1057

设f[i][j]为以i,j为正方形右下顶点的最大边长
不难得出初始值 f[i][j] = a[i][j] ,a为输入数组
则有状态转移方程 f[i][j] = min(f[i-1][j], f[i-1][j-1], f[i][j-1]);
因为f[i][j]只能从这些点得出 

#include
#include
#include
#include
#include
#define ms(i,j) memset(i,j,sizeof(i));
using namespace std;
/*
	设f[i][j]为以i,j为正方形右下顶点的最大边长
	不难得出初始值 f[i][j] = a[i][j] ,a为输入数组
	则有状态转移方程 f[i][j] = min(f[i-1][j], f[i-1][j-1], f[i][j-1]);
	因为f[i][j]只能从这些点得出 
*/
int f[1005][1005];
int a[1005][1005];
int main()
{
	int n,m;
	scanf("%d%d", &n, &m);
	for (int i=0;i


你可能感兴趣的:(动态规划,Vijos)