動規 多邊形遊戲

2021-07-11 16:39:30 字數 1035 閱讀 1850

多邊形遊戲大概是這樣的:看下面的一幅圖:

有乙個多邊形,節點處是數字,邊上是運算子,這裡只考慮「+」和「*」兩種,兩個點的數與他們之間的運算子進行運算後的結果數構成新的節點,這樣運算到最後只剩乙個數,我們要求得能夠運算出的最大的數。

#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...