一、算法分析
和其它的相似的找矩形类的DP题一样,这道题需要用正方形的右下角来统计相应的正方形。而状态的转移取决于左上角那个正方形能否向右下角扩展。详见代码及注释。
二、代码及注释
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N=255;
int f[N][N][N]; //f[i][j][k]记录以(i,j)为右下角的边长为k的正方形有几个
int d[N][N]; //记录该位置能组成的最大正方形边长
char G[N][N]; //存图
int n;
int w[N];