在乙個n*m的只包含0和1的矩陣裡找出乙個不包含0的最大正方形,輸出邊長。
輸入格式:
輸入檔案第一行為兩個整數n,m(1<=n,m<=100),接下來n行,每行m個數字,用空格隔開,0或1.
輸出格式:
乙個整數,最大正方形的邊長
輸入樣例#1: 複製
4 40 1 1 1
1 1 1 0
0 1 1 0
1 1 0 1
輸出樣例#1: 複製
2這類問題和二維區間和的演算法差不多
#include#include#include
#include
#include
#include
using
namespace
std;
int n,m,maxn=1
;int a[110][110],f[110][110
];int
main()
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int k=maxn;i+k)
printf("%d
",maxn);
return0;
}
忙完了學校的事,v神終於可以做他的「正事」:陪女朋友散步。一天,他和女朋友走著走著,不知不覺就來到了乙個千里無菸的地方。v神正要往回走,如發現了一塊牌子,牌子上有有一行小字和一張圖,小字說道:「找到圖上最大的交錯正方形之後和我聯絡,這塊地就是你的了。」在房價瘋長的年代,v神當然不願錯過這個機會,於是開始找了起來……以v神的能力當然找不出來了,你能幫v神找出來嗎?
圖上有乙個矩陣,由n*m個格仔組成,這些格仔由兩種顏色構成,黑色和白色。請找到面積最大的且內部是黑白交錯(即兩個相連的正方形顏色不能相同)的正方形。
輸入格式:
第一行兩個整數n和m,分別表示行數和列數。接下來有n行,每行m個數,0或1分別表示這個格仔是黑色或白色。
輸出格式:
僅有一行,表示滿足條件最大正方形的 邊長
輸入樣例#1: 複製
3 30 1 0
1 0 0
1 1 1
輸出樣例#1: 複製
2
#include #include#include
#include
#include
using
namespace
std;
const
int n=1509
;int
n,m;
bool
map[n][n];
intf[n][n];
intans;
intmain()
cout
}
樣例解釋:
(1,1)到(2,2)這個正方形是滿足條件的,它的邊長是2
資料範圍約定:
對於30%的資料,n <= 20
對於60%的資料,n <=300
對於100%的資料,n <= 1500
洛谷P1681 最大正方形II
忙完了學校的事,v神終於可以做他的 正事 陪女朋友散步。一天,他和女朋友走著走著,不知不覺就來到 了乙個千里無菸的地方。v神正要往回走,如發現了一塊牌子,牌子上有有一行小字和一張圖,小字說道 找到圖上最大的交錯正方形之後和我聯絡,這塊地就是 你的了。在房價瘋長的年代,v神當然不願錯過這個機會,於是開...
洛谷 P1681 最大正方形II 線性dp
忙完了學校的事,v神終於可以做他的 正事 陪女朋友散步。一天,他和女朋友走著走著,不知不覺就來到了乙個千里無菸的地方。v神正要往回走,如發現了一塊牌子,牌子上有有一行小字和一張圖,小字說道 找到圖上最大的交錯正方形之後和我聯絡,這塊地就是你的了。在房價瘋長的年代,v神當然不願錯過這個機會,於是開始找...
luogu P1681 最大正方形II
交了十幾遍才過,本來這只是一道水題,然而誰讓我快讀寫炸了呢 詳情見 gg記錄 6 f i j 表示i,j位置為右下角的最大正方形 如果i或j為1,很顯然,f i j 的值最大為1,否則便要從三個方向取最小值轉移 如果不滿足轉移的條件,將其賦值為1即可 includevoid read int y i...