1007 正整數分組
基準時間限制:1 秒 空間限制:131072 kb 分值: 10
難度:2級演算法題
將一堆正整數分為2組,要求2組的和相差最小。
例如:1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。
input
第1行:乙個數n,n為正整數的數量。output第2 - n+1行,n個正整數。
(n <= 100, 所有正整數的和 <= 10000)
輸出這個最小差input示例
512345output示例
1相關問題
正整數分組 v2
80本題要求兩個正整數陣列的和差,那麼要使得兩個和差最小,那麼必定每個陣列是越靠近sum/2的(就是和的中間點)
那麼我們就可以把這道題目轉化為簡單的01揹包了
const int maxn=10010;
int a[maxn];
int dp[maxn];
int main()
{ ios::sync_with_stdio(false);
int n;cin>>n;
int sum=0;
for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i];
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
for(int j=sum/2;j>=a[i];j--)
dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
cout<
51Nod 1007 正整數分組
將一堆正整數分為2組,要求2組的和相差最小。例如 1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。input 第1行 乙個數n,n為正整數的數量。第2 n 1行,n個正整數。n 100,所有正整數的和 10000 output 輸出這個最小差input...
51Nod 1007 正整數分組
1007 正整數分組 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 將一堆正整數分為2組,要求2組的和相差最小。例如 1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。input 第1行 乙個數n,n為正整數的數量。...
51nod 1007 正整數分組
01揹包 需要多做這種題 能看到題想到這個思路 如果sum為奇數 比如 sum 5,那麼sum 2 就是2 所以 總共的sum dp sum 2 就是較大的那一塊分類 然後dp sum 2 就是較小的 然後兩者做差就是 相差最少的 includeusing namespace std const i...