題目:首先給出n個數字a1,
a2,a
3,……
,a
na1,a2,a3,……,an
a1,a2,
a3,…
…,an
,然後給你m
mm個回合,每回合你可以從中選擇乙個數字取走它,剩下來的每個數字aiai
ai都要遞減乙個值bibi
bi,即a 1a1
a1減掉b 1b1
b1,a 2a2
a2減掉b 2b2
b2,….。如此重複m
mm個回合,所有你取出的數字之和就是你所得的分數。求出最多可以得到多少分。
思路:我們我將b按從大到小排序,實現每次減少最小的數,再使用動態規劃的方法。
接下來我們用c++進行程式設計:
#include
#include
#include
#include
#include
using
namespace std;
int a[
110]
, b[
110]
;int f[
110]
[110];
intmaim()
for(
int i =
1; i <= n; i++
) cout << f[n]
[m];
return0;
}
演算法訓練 方格取數
演算法訓練 方格取數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 設有n n的方格圖 n 10 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。某人從圖的左上角的a 點 1,1 出發,可以向下行走,也可以向右走,直到到達右下角的b點 n,n 在走過的路上,他可以取走方格中...
演算法訓練 方格取數
問題描述 設有n n的方格圖 n 10 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。某人從圖的左上角的a 點 1,1 出發,可以向下行走,也可以向右走,直到到達右下角的b點 n,n 在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共走兩次,試找出2...
演算法題 平衡數
牛牛在研究他自己獨創的平衡數,平衡數的定義是 將乙個數分成左右兩部分,分別成為兩個新的數。左右部分必須滿足以下兩點 1,左邊和右邊至少存在一位。2,左邊的數每一位相乘如果等於右邊的數每一位相乘,則這個數稱為平衡數。例如 1221這個數,分成12和21的話,1 2 2 1,則稱1221為平衡數,再例如...