列舉 求三角形最大面積問題

2021-06-08 07:37:04 字數 1232 閱讀 8429

3、求三角形最大面積問題(********.pas/cpp)

【題目描述】

聖誕節快到了。你接受了一件光榮的任務,就是製作聖誕樹頂上的那顆大星星。不過當你拿到製作的三角形銀紙的時候,你發現銀紙上面有許多洞。原來你的妹妹已經在銀紙上剪下了一些小的三角形來製作小星星。你唯有尋找乙個演算法,告訴你在每張銀紙上還能切出來的最大的三角形面積。

給定乙個三角形,裡面有黑色和白色的區域,你必須找到白色的區域中最大三角形的面積,如圖所示。

【輸入格式】

輸入檔案包含若干個三角形描述。每個三角形描述的第1行是乙個整數n(1≤n≤100),表示該三角形的高。接下來的n行每行包含由空格、「#」和「-」組成的字串表示三角形的狀況。其中「#」代表黑色的區域,「-」代表白色的區域。空格是用來填充輸入的左邊,從而使得整個輸入構成乙個三角形的形狀。

對每個三角形,每行字元「#」和「-」的數目之和都是奇數,由2n-1遞減至1。

全部輸入以n=0結束

【輸出格式】

對輸入的每個三角形,輸出白色的區域中最大三角形面積。注意,最大三角形可以是頂角朝上的,如同第2個樣例輸入所示。

【輸入輸出樣例】

輸入輸出

標程方法是動規。。不知道是怎麼搞的。

其實就是列舉頂點,然後向上和向下,每次向左向右寬度增加1,都不能遇到障礙。

為了減小複雜度,弄了乙個預處理,就是每個點向左向右最多能達到多少。

犯了點錯誤,所以只得了30分。

問題在於,一開始我列舉頂點的時候,是1到最右邊,其實這樣不對,稍微畫圖就能發現。

三角形和倒三角形的頂點是不同的,乙個是奇數,乙個是偶數。

還有判斷無障礙寫錯了。

其實題很簡單。

#include char map[510][510];

long l[510][510];

long r[510][510];

#define max(a,b) ((a)>(b)?(a):(b))

int main()

} long maxh = 1;

for (long i=1;i=j+i+(k-i))

maxh = max(maxh,k-i+1);

else

break;}}

}} for (long i=1;i0;k--)}}

} printf("%ld\n",maxh*maxh);

} return 0;

}

求三角形最大面積

include define maxnum 10 char maxnum maxnum bool f maxnum maxnum maxnum int n void input file fp int i fp fopen input.txt r fscanf fp,d n for i 1 i n ...

JSP求三角形面積

2 實驗1 60分鐘 2.1 實驗目的 計算三角形的面積 2.2 實驗任務 1 定義乙個可以輸入三角形三條邊的 html頁面 2 定義乙個可以計算三角形面積的 jsp頁面 3 顯示三角形的面積 2.3 實驗要求 1 三角形的邊必須為數字,如果三條邊沒有賦初值,則三條邊賦初值為零 2 判斷三角形的三條...

三角形面積

算是自己第一道正式寫的演算法幾何吧,先從簡單的開始吧,加油!描述 給你三個點,表示乙個三角形的三個頂點,現你的任務是求出該三角形的面積 輸入 每行是一組測試資料,有6個整數x1,y1,x2,y2,x3,y3分別表示三個點的橫縱座標。座標值都在0到10000之間 輸入0 0 0 0 0 0表示輸入結束...