多邊形遊戲是乙個單人玩的遊戲,開始時有乙個由n個頂點構成的多邊形。每個頂點被賦予乙個整數值,每條邊被賦予乙個運算子 "+" 或 "*"。所有邊依次用整數從1到n編號。
遊戲第1步,將一條邊刪除。
隨後的n-1步按以下方式操作:
(1)選擇一條邊e以及由e連線著的兩個頂點v1和v2;
(2)用乙個新的頂點取代邊e以及由e連線著的兩個頂點v1和v2。將由頂點v1和v2的整數值通過邊e上的運算得到的結果賦予新頂點。
最後,所有邊都被刪除,遊戲結束。遊戲的得分就是所剩頂點上的整數值。
問題:對於給定的多邊形,計算最高得分w( -231
<w< 231 )。
輸入的第一行是單獨乙個整數n( 3 ≤n≤ 18 ),表示多邊形的頂點數(同時也是邊數)。接下來第n行,每行包含乙個運算子("+"或"*")和乙個整數v[i]( -10 <v[i] < 10 ),分別表示第i條邊所對應的運算子和第i
個頂點上的數值。
輸出只有乙個整數,表示最高得分w。
3+ 2
* 3+ 1
9
#include#include#include
#define max 102
using
namespace
std;
intv[max];
char
op[max];
intn,minf,maxf;
int m[max][max][2
];void minmax(int i,int s,int
j)
else
}}int
polymax()
for(int j=2; j<=n; j++)
for(int i=1; i<=n; i++)
for(int s=1; s)
int temp=m[1][n][1
];
for(int i=2; i<=n;i++)
if(temp1]) temp=m[i][n][1
];
return
temp;
}int
main()
cout
<< polymax()
}
多邊形遊戲
07 多邊形遊戲 描述乙個多邊形,開始有n個頂點。每個頂點被賦予乙個正整數值,每條邊被賦予乙個運算子 或 所有邊依次用整數從1到n編號。現在來玩乙個遊戲,該遊戲共有n步 最後,所有邊都被刪除,只剩乙個頂點,遊戲結束。遊戲得分就是所剩頂點上的整數值。那麼這個整數值最大為多少?關於輸入 第一行為多邊形的...
多邊形遊戲
該問題用動態規劃中的最優子結構來解決,當把一條邊去除除后,再把它拉直,那麼這個問題就最後可以變成一條鏈。那麼就和以前寫的矩陣連乘問題和凸多邊形最優三角剖分相似,最後要求的是這個鏈的表示式算式結果的最大值。於是我們就可以想到可以用陣列p i j 來表示從點i開始,鏈長為j的算術表示式的最大值,用v i...
多邊形 區間dp
題意簡單來說就是 給你乙個環,斷掉一條邊使其成為乙個鏈,用這個鏈跑dp,求最大得分。首先這不是一道板子題。跟板子區別如下 1.多了一重迴圈,最開始要求斷掉一條邊,但是我們不知道要斷掉哪一條邊,因此需要迴圈一遍來比較。2.計算方法有加法有乘法,而且資料有正數有負數。這兩個條件任意乙個都不足懼,但是如果...