問題:給定一排n個硬幣,其面值均為整數c1, c2, …, cn, 這些整數並不一定兩兩不同。問如何選擇硬幣,使得在其原始位置互不相鄰的條件下,所選硬幣的總金額最大。
利用f陣列記錄前n個硬幣的最佳選擇方案,然後根據最優化原理開始優化。
本文給出了f(n)的遞推關係式,**,時間複雜度以及n=6時的一組示例資料
// 1. f(n)=max
// 2. isselected陣列記錄c中對應的數是否被選中,若選中,則記1
#include
#define n 6
using namespace std;
int main()
,f[n+1];
for (i = 1; i <= n; i++) cin >> c[i - 1];
f[0] = 0;
f[1] = c[0];
for (i = 2; i <= n; i++)
else
f[i] = f[i - 1];
}i = n;
while (i > 1)
else if (f[i] == f[i - 2] + c[i - 1]) }
if (f[3] == f[1] + c[2]) isselected[0] = 1;
cout << f[n] << endl;
for (i = 1; i <= n; i++)
if (isselected[i - 1] == 1) cout << c[i - 1] << ' ';// 3.t(n)=3n=o(n)
/* 4. c[5]=
i f[n]
0 01 5
2 53 5+2
4 5+10
5 (5+2)+6
6 (5+10)+2 = 17
*/
視窗最大化
1 jframe 視窗最大化,在建構函式中 新增如下 this.setextendedstate jframe.maximized both 2 jinternalframe視窗最大化,需要在新增到jframe的desktoppane之後設定,如下 bookframe.setmaximum true...
C mdi子窗體最大化問題
c mdi子窗體最大化 2008 08 15 13 23 有時候我們需要在子窗體顯示的時候就是最大化 也就是填充了整個父窗體 但通常會遇到以下麻煩 如果在 visual studio 2005裡通過屬性工具欄設定了子窗體的 windowstate 為 maximized,然後在執行過程中會發現子窗體...
Windows開發 視窗最大化問題
movewindow 0,0,1920,1080 和sendmessage wm syscommand,sc maximize,0 的區別 movewindow 0,0,1920,1080 我們可以分為視窗有標題欄和沒有標題欄兩種情況進行討論 首先來看有標題欄的情況的效果如下圖所示,movewind...