多邊形遊戲大概是這樣的:看下面的一幅圖:
有乙個多邊形,節點處是數字,邊上是運算子,這裡只考慮「+」和「*」兩種,兩個點的數與他們之間的運算子進行運算後的結果數構成新的節點,這樣運算到最後只剩乙個數,我們要求得能夠運算出的最大的數。
#include
#include
using
namespace
std;
int ***m;
char *op;
void minmax(int n, int i, int s, int j, int& minf, int& maxf);
int polymax(int n);
int main()
cin >> m[n][1][0];
cin >> op[1];
m[n][1][1] = m[n][1][0];
int max = polymax(n);
cout
<< "最大值為:"
<< max << endl;
return0;}
//求i,j之間的表示式構成的最大值和最小值
void minmax(int n, int i, int s, int j, int& minf, int& maxf)
else
}//通過不同的斷鏈方法,求所有的最大值中的最大值
int temp = m[1][n][1];
for (int i = 2; i <= n; i++)
if (temp1])
temp = m[i][n][1];
return temp;
}
運算結果:
多邊形遊戲
07 多邊形遊戲 描述乙個多邊形,開始有n個頂點。每個頂點被賦予乙個正整數值,每條邊被賦予乙個運算子 或 所有邊依次用整數從1到n編號。現在來玩乙個遊戲,該遊戲共有n步 最後,所有邊都被刪除,只剩乙個頂點,遊戲結束。遊戲得分就是所剩頂點上的整數值。那麼這個整數值最大為多少?關於輸入 第一行為多邊形的...
多邊形遊戲
該問題用動態規劃中的最優子結構來解決,當把一條邊去除除后,再把它拉直,那麼這個問題就最後可以變成一條鏈。那麼就和以前寫的矩陣連乘問題和凸多邊形最優三角剖分相似,最後要求的是這個鏈的表示式算式結果的最大值。於是我們就可以想到可以用陣列p i j 來表示從點i開始,鏈長為j的算術表示式的最大值,用v i...
多邊形遊戲問題
問題描述 多邊形遊戲是乙個單人玩的遊戲,開始時有乙個由n個頂點構成的多邊形。每個頂點被賦予乙個整數值,每條邊被賦予乙個運算子 或 所有邊依次用整數從1到n編號。遊戲第1步,將一條邊刪除。隨後n 1步按以下方式操作 1 選擇一條邊e以及由e連線著的2個頂點v1和v2 2 用乙個新的頂點取代邊e以及由e...