[求助] 一道ACM题 分苹果 实在是想不出来,哪位牛人帮帮忙啊

呆呆的人v 2012-04-26 12:08:38
Description

有1000个苹果和10个筐子,筐子的编号为1-10.现要将这1000个苹果放入这10个筐子,要求:

(1)编号大的筐子中的苹果数量要严格大于编号小的筐子中的苹果数.

(2)从1-1000中任取1个数字,这个数字都能由10个筐子中的某几个筐子的苹果数和组成.

注意:筐中的苹果是一个整体,不能取筐中的一部分苹果,即一旦选取某个筐子,该筐的苹果数就必须全部计入.
Input
没有输入.
Output

要求在屏幕上按"字典"升序打印出所有可行放法.

每行打印1种方法,按编号升序打印出对应的筐中苹果个数,中间用空格隔开.

注意:行尾不要有任何空格出现.
Example Input

Example Output

1 2 4 8 16 31 63 125 250 500
1 2 4 8 16 31 63 125 251 499
1 2 4 8 16 31 63 126 249 500
.
.
.
1 2 4 8 16 32 64 128 256 489
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
呆呆的人v 2012-04-27
  • 打赏
  • 举报
回复
这道题我已经懂了 谢谢大家啦
nice_cxf 2012-04-26
  • 打赏
  • 举报
回复
反向想的话,尽量折半500,250,125,63(62的话剩余1如果加到前边就更大了),31,16(15的话剩余1无处+),8,4,2,1
因此最小是1 2 4 8 16 31 63 125 250 500,最大就是按二进制1 2 4 8 16 32 64 128 256 489
写个函数求下一个满足条件(后边的编号要<=前边的编号之和+1)即可
nice_cxf 2012-04-26
  • 打赏
  • 举报
回复
后边的编号要<=前边的编号之和+1,前2个必然为12,最后一个<=500能直接想到的大概就这些

hen_hao_ji 2012-04-26
  • 打赏
  • 举报
回复
恩,数据结构与算法
[Quote=引用 2 楼 的回复:]
ACM的题果然给力,感觉弄ACM就是搞数据结构
[/Quote]
Spy 2012-04-26
  • 打赏
  • 举报
回复
ACM的题果然给力,感觉弄ACM就是搞数据结构
hen_hao_ji 2012-04-26
  • 打赏
  • 举报
回复
应该是往 二进制 想吧,10位二进制,可以表示 1024之间任意数

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧