码迷,mamicode.com
首页 > 其他好文 > 详细

刷水题(五)

时间:2018-09-06 00:06:25      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:span   name   main   表示   code   target   using   out   输入   

我要两天刷完所有n道水题,做出第i道题能获得a[i]点积分。现在我想要两天获得的积分尽量平均,问最小差多少?

【输入】

第一行一个整数n,第二行n个整数,第i个整数a[i]表示做第i道水题获得的积分。

【输出】

一个整数,表示两天积分的最小差值。

【样例输入】

5

5 8 13 27 14

【样例输出】

3

【输出说明】

(8+27)-(5+13+14)=3(积分)

水题4类似,只不过总时间为所有积分总和的一半。(想想为什么)

 1 #include<iostream>
 2 using namespace std;
 3 int a[105];
 4 bool dp[100005]={1};
 5 int main()
 6 {
 7     int n,sum=0;
 8     cin>>n;
 9     int i,j;
10     for(i=1;i<=n;i++)
11     {
12         cin>>a[i];
13         sum+=a[i];
14     }
15     for(i=1;i<=n;i++)
16         for(j=sum/2;j>=1;j--)
17             if(j>=a[i])
18                 dp[j]=dp[j-a[i]];
19     for(i=sum/2;i>=0;i--)
20         if(dp[i])
21         {
22             cout<<sum-i*2;
23             return 0;
24         }
25     return 0;
26 }

 

刷水题(五)

标签:span   name   main   表示   code   target   using   out   输入   

原文地址:https://www.cnblogs.com/jiaweigao/p/9594940.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!