問題描述:
同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立的地方,他倆的關係就像磚與磚之間一樣固定,無法動搖。還記得當初鋪磚的工人,將整個操場按正方形鋪磚(整個操場可視為r行c列的矩陣,矩陣的每個元素為一塊正方形磚塊),正方形磚塊有兩種,一種為藍色,另一種為紅色。我們定義他和她之間的「愛情指標」為最大純色正方形的面積,請你寫乙個程式求出「愛情指標」。
輸入格式:
第一行兩個正整數r和c。
接下來r行c列描述整個操場,紅色磚塊用1來表示,藍色磚塊用0來表示。
輸出格式:
乙個數,表示他和她之間的「愛情指標」。
樣例輸入:
5 80 0 0 1 1 1 0 1
1 1 0 1 1 1 1 1
0 1 1 1 1 1 0 1
1 0 1 1 1 1 1 0
1 1 1 0 1 1 0 1
樣例輸出:
9資料規模和約定:
40%的資料r,c<=10;
70%的資料r,c<=50;
100%的資料r,c<=200;
#include
using namespace std;
int r,c
;int ans =-1
;int gra[
205]
[205]=
; int dp[
205]
[205]=
;int findmaxrec
(int a, int b, int c)}if
(flag) re++
;else
break;}
return re;
}int main()
} cout << ans * ans;
return0;
}
使用 gra[i][j] 來儲存輸入的磚塊。dp[i][j] 表示為從(0,0)到(i,j)的矩形中最大的純色正方形邊長。則 dp[i][j] 初始化如下:
for
(int i =
0; i <
c; i++
) dp[0]
[i]=1;
for(int i =
0; i <
r; i++
) dp[i][0
]=1;
編寫函式 findmaxrec() 。輸入座標(i,j)和 gra[i][j] ,返回以(i,j)為右下頂點的最大純色正方形的邊長。a,b,c 分別為 i,j,gra[i][j] 。
int findmaxrec
(int a, int b, int c)}if
(flag) re++
;else
break;}
return re;
}
動態規劃方程:
dp[i]
[j]=
findmaxrec
(i, j, gra[i]
[j])
;dp[i]
[j]=
max(dp[i -1]
[j], dp[i]
[j])
;dp[i]
[j]=
max(dp[i]
[j -1]
, dp[i]
[j])
;dp[i]
[j]=
max(dp[i -1]
[j -1]
, dp[i]
[j])
;
演算法訓練 暗戀
演算法訓練 暗戀 時間限制 1.0s 記憶體限制 256.0mb 問題描述 同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立的地方,他倆的關係就像磚...
演算法訓練 暗戀
演算法訓練 暗戀 時間限制 1.0s 記憶體限制 256.0mb 錦囊1 錦囊2 錦囊3 問題描述 同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立...
藍橋杯 ALGO 112 演算法訓練 暗戀
演算法訓練 暗戀 時間限制 1.0s 記憶體限制 256.0mb 問題描述 同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立的地方,他倆的關係就像磚...