有球1000盒10,问各盒分别放几球,能保证若干盒能组成1-1000内任意数
来源:互联网 发布:artcam二维编程 编辑:程序博客网 时间:2024/06/05 08:22
今早来到CSDN里转了一圈,发现有个帖子《求教很难的面试题目》,打开一看,题目如下:
现有1000个球,10个盒子,问各个盒子内应该分别放入多少个球,才能达到需要1至1000
之间任何数量的球,你都可以用若干盒子组合出来(用C/C++编写程序)
惭愧的是刚看到这个这个题目时竟然真的想不到思路了,哎,看来还是需要扩展视野啊!下面是一些前辈的解法,贴来和大家一起学习!
任何一个十进制整数显然都可以转换成二进制。
考虑1-1023范围的数字二进制表示数字,最多就是10个bit。因为1+2+4+8+..+512 = 1023
而9个bit可以表示1到511之间的所有数字,那么再加上一个1000-511=489配合一下,就可以
表示490-1000的所有数字了。
#include<iostream>
using namespace std;
int solution[10];
bool IsSolve(int* data, int beg, int end, int des)
{
if (data[beg]==des)
{
solution[beg]=1;
return true;
}
if (beg<end)
{
if (IsSolve(data, beg+1, end, des-data[beg]))
{
solution[beg]=1;
return true;
}
if (IsSolve(data, beg+1, end, des)) { solution[beg]=0;
return true;
}
}
return false;
}
int main()
{
int data[10];
int sum = 1000;
int no_solution = 0;
for (int i = 0; i < 9; ++i)
data[i] = 1<<i, sum -= 1<<i;
data[9] = sum;
for (int j = 1; j < 1001; ++j)
{
if (!IsSolve(data, 0, 10, j))
{
no_solution++;
}
else
{
cout << j << ":/t";
for (int k = 0; k < 10; solution[k++] = 0)
cout << solution[k];
cout << endl;
}
}
cout << "无解数:" << no_solution << endl;
return 0;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zjl_1026_2001/archive/2008/03/18/2193575.aspx
- 有球1000盒10,问各盒分别放几球,能保证若干盒能组成1-1000内任意数?
- 有球1000盒10,问各盒分别放几球,能保证若干盒能组成1-1000内任意数
- 面试:1,2,3,4四个数能组成多少个无重复数字的三位数?分别是?
- 有1,2,3,4个数,能组成多少个不相同无重复的三位数,分别是多少?
- 能被1, 2 ,3 ,4 ,5, 6 ,7 ,8 ,9 分别整除的数有什么规律
- 打印1-1000内所有能被3整除的数
- 关于1000个鸡蛋放入10个篮子通过提篮子能得到1000当中的任意数
- 能组成几个平行四边形--组合数
- java 循环问题 大全 求2~100a之内的素数。求水仙花数:(1~1000)。有1、2、3、4四个数字,输出所有能组成的互不相同且无重复的三位数。打印空心菱形
- 实现1000到2000内所有能同时被17和37整除的数
- const也不能保证
- 练习题目4. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位 数?都是多少?
- 有1,2,3,4这四个数,能组成多少互补相同且无重复的三位数字,都是多少?
- 有1,2,3,4四个数,能组成多少个互不相同且无重复数字的三位数?都是多少?
- poj 2356 Find a multiple 【抽屉原理应用】【在n个数组成的数列中找出若干个连续数使它们之和能被n整除】
- 给定一个任意长度的java数组,求数组内的数能组合出来的最大整数
- 用1, 3, 5, 7四个数能组成多少个不重复的三位数
- 1-6 是否能组成三角形?
- java.net.BindException: Cannot assign requested address: JVM_Bind:8080
- 发展方向
- 用C设计,用C++编码
- 男人和美女聊天时智商会降低
- 中国译协中译英最新发布词汇—“xxx 观”&先进文化
- 有球1000盒10,问各盒分别放几球,能保证若干盒能组成1-1000内任意数
- [双语阅读]杰克逊绝唱纪录片全球首映
- oracle更改归档路径
- Out of juice 没电了
- 补缺选举 by-election
- [英语阅读]中国首个鬼屋展现地道万圣节
- 结婚忙碌一个月后,BLOG重启
- 僵尸电脑 zombie computer
- (C#)利用反射动态调用类成员