博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
摩拜单车2019春招笔试题
阅读量:4327 次
发布时间:2019-06-06

本文共 695 字,大约阅读时间需要 2 分钟。

有n堆石头,现在请将它们分成两堆,并要求两堆的重量和尽可能接近,输出两堆石头的重量和,结果按降序排列。

算法:动态规划

#include
#include
#include
#include
using namespace std;int main(void){ int n,sum=0; cin>>n; vector
f(n); for(int i=0;i
>f[i]; sum+=f[i]; } int m=sum/2; vector
dp(m+1,0); dp[0]=0; for(int i=0;i
=f[i];j--){ dp[j]=max(dp[j],dp[j-f[i]]+f[i]); } int ans=abs(dp[0]-sum),k=0; for(int i=1;i<=m;i++){ if(ans>abs(dp[i]-sum)){ ans=abs(dp[i]-sum); k=i; } } if(sum-dp[k]<=dp[k])cout<
<<' '<
<

 

转载于:https://www.cnblogs.com/programyang/p/11154473.html

你可能感兴趣的文章
laravel连接sql server 2008
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
Ubuntu菜鸟入门(五)—— 一些编程相关工具
查看>>
valgrind检测linux程序内存泄露
查看>>
Hadoop以及组件介绍
查看>>
1020 Tree Traversals (25)(25 point(s))
查看>>
第一次作业
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>