【題目描述】
給定乙個信封,最多隻允許貼上n(n≤100)張郵票,我們現在有m(m≤100)種郵票,面值分別為:x1,x2……xm(xi≤255為正整數),並假設各種郵票都有足夠多張。
要求計算所能獲得的郵資最大範圍。即求最大值max,使1-max之間的每乙個郵資都能得到。
例如:n=4,有2種郵票,面值分別為1分,4分,於是可以得到1-10分和12分,13分,16分郵資,由於得不到11分和15分,所以郵資的最大範圍max=10
【輸入格式】
第一行為最多貼上的郵票張數n。第二行為郵票種數m。以下m行各有乙個數字表示郵票的面值。
【輸出格式】
僅乙個數,最大的max的值。
【輸入樣例】
【輸出樣例】
【時間限制】
最大測試點0.5s
用的搜尋做的,不知道對不對,求教。
#include #include #include using namespace std;
int cmp(int a, int b)
int n, m;
int stamp[105];
bool vis[25500+5];
void solve(int num, int bal)
}int main()
sort(stamp+1, stamp+m+1, cmp);
maxn = stamp[m]*n;
vis[0] = true;
vis[maxn] = true;
for (int i = 1; i <= m; ++i)
for (int i = 1; i <= maxn + 1; ++i)
}printf("%d\n", ans);
return 0;
}
郵票問題詳細題解 簡單dp
已知乙個 n 枚郵票的面值集合 如,和乙個上限 k 表示信封上能夠貼 k 張郵票。計算從 1 到 m 的最大連續可貼出的郵資。例如,假設有 1 分和 3 分的郵票 你最多可以貼 5 張郵票。很容易貼出 1 到 5 分的郵資 用 1 分郵票貼就行了 接下來的郵資也不難 6 3 3 7 3 3 1 8 ...
DP求解有趣的數問題
dynamic programming 動態規劃 問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外...
郵票(DP或貪心)
郵票已知乙個 n 枚郵票的面值集合 如,和乙個上限 k 表示信封上能夠貼 k 張郵票。計算從 1 到 m 的最大連續可貼出的郵資。例如,假設有 1 分和 3 分的郵票 你最多可以貼 5 張郵票。很容易貼出 1 到 5 分的郵資 用 1 分郵票貼就行了 接下來的郵資也不難 6 3 3 7 3 3 1 ...