演算法訓練 暗戀

2021-08-30 22:07:39 字數 1862 閱讀 5421

問題描述:

同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立的地方,他倆的關係就像磚與磚之間一樣固定,無法動搖。還記得當初鋪磚的工人,將整個操場按正方形鋪磚(整個操場可視為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 問題描述 同在乙個高中,他卻不敢去找她,雖然在別人看來,那是再簡單不過的事。暗戀,是他唯一能做的事。他只能在每天課間操的時候,望望她的位置,看看她傾心的動作,就夠了。操場上的彩磚啊,你們的位置,就是他們能夠站立的地方,他倆的關係就像磚...