51Nod 1007 正整数分组 | DP (01背包)
生活随笔
收集整理的這篇文章主要介紹了
51Nod 1007 正整数分组 | DP (01背包)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
Input示例 5 1 2 3 4 5 Output示例 1分析:
2組的差最小,那么每一組都要接近sum/2,這樣就轉(zhuǎn)化成了普通的0 - 1背包了
#include <bits/stdc++.h> using namespace std; typedef long long LL; #define rep(i,a,n) for(int i = a; i < n; i++) #define repe(i,a,n) for(int i = a; i <= n; i++) #define per(i,n,a) for(int i = n; i >= a; i--) #define clc(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f3f #define N 1000010 const int MAXN = 110; int dp[10010]; int n,m; int val[MAXN]; int main() {while(cin >>n){int sum = 0;for(int i = 1; i <= n; i++){cin >>val[i];sum += val[i];}sort(val+1,val+n+1);memset(dp,0,sizeof(dp));for(int i = 1; i <= n; i++){for(int j = sum/2; j >= val[i]; j--){dp[j] = max(dp[j],dp[j - val[i]]+val[i]);}}cout<<abs(sum - dp[sum/2]*2)<<endl;} }
?
轉(zhuǎn)載于:https://www.cnblogs.com/kimsimple/p/7463681.html
總結(jié)
以上是生活随笔為你收集整理的51Nod 1007 正整数分组 | DP (01背包)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 转:Linux实时将所有输出重定向到文件
- 下一篇: Redis笔记之常用命令