在乙個n*m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。
輸入格式:
輸入檔案第一行為兩個整數n,m(1<=n,m<=100),接下來n行,每行m個數字,用空格隔開,0或1.
輸出格式:
乙個整數,最大正方形的邊長
輸入樣例#1:
4 4輸出樣例#1:0 1 1 1
1 1 1 0
0 1 1 0
1 1 0 1
20 0 0 1解析:本題題意明確,明顯符合動態規劃的要求,可運用「二維dp」求解。
設f[i][j]表示左上角i行j列構成的長方形中最大正方形的邊長,在對f[i][j]進行轉移的時候,要從左上,上,左中選乙個最小的即可(請讀者結合下面的樣例)
輸入:
1 1 1 1
0 1 1 1
1 1 1 1
f陣列0 0 0 1
1 1 1 1
0 1 2 2
1 1 2 3
1 #include2view codeusing
namespace
std;
3int n,m,s,f[105][105
],ans;
4int
main()517
}18}19 cout<
20return0;
21 }
雙倍經驗:
P1387 最大正方形
法1 矩陣字首和 n 3 列舉點i,j 和邊長o,如果右下角與左下角之間的數是完全平方數,既是正方形。include include include include include include include include define ll long long using namespace...
P1387 最大正方形
在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。輸入格式 輸入檔案第一行為兩個整數n,m 1 n,m 100 接下來n行,每行m個數字,用空格隔開,0或1.輸出格式 乙個整數,最大正方形的邊長 輸入樣例 1 複製4 4 0 1 1 1 1 1 1 0 0 1 1 0 1 1...
P1387 最大正方形
在乙個n m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。輸入格式 輸入檔案第一行為兩個整數n,m 1 n,m 100 接下來n行,每行m個數字,用空格隔開,0或1.輸出格式 乙個整數,最大正方形的邊長 輸入樣例 1 複製4 4 0 1 1 1 1 1 1 0 0 1 1 0 1 1...