标签:spl alt int splay bit pen 正方形 eve open
题意:找出最大的一个正方形;
思路:很显然,我们需要进行状态转移的点肯定要保证当前位置的权值为1
所以,当我们在某个点进行转移的时候呢,只需要看3个点的情况,找出他们的最小值+1即可
哪三个呢? 左 上 左上这三个点
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e2+10; 4 int dp[maxn][maxn]; 5 int main() 6 { 7 int n,m; 8 scanf("%d%d",&n,&m); 9 int ans=0; 10 for(int i=1;i<=n;i++) 11 for(int j=1;j<=m;j++){ 12 int tmp; 13 scanf("%d",&tmp); 14 if(tmp==1){ 15 dp[i][j]=min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1; 16 ans=max(ans,dp[i][j]); 17 } 18 } 19 printf("%d\n",ans); 20 }
标签:spl alt int splay bit pen 正方形 eve open
原文地址:https://www.cnblogs.com/pangbi/p/12621021.html