首页 新闻 搜索 专区 学院

一個同事給我一個面試題,不知道程序怎么實現?

0
悬赏园豆:10 [已解决问题] 解决于 2008-07-12 07:42
<SPAN lang=EN-US style="FONT-SIZE: 10.5pt">1</SPAN><FONT size=2><SPAN lang=ZH-CN style="FONT-SIZE: 10.5pt">、现有</SPAN></FONT><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 10.5pt">1000</SPAN></FONT><FONT size=2><SPAN lang=ZH-CN style="FONT-SIZE: 10.5pt">个苹果,</SPAN></FONT><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 10.5pt">10</SPAN></FONT><FONT size=2><SPAN lang=ZH-CN style="FONT-SIZE: 10.5pt">个盒子,问各个盒子内应该分别放入多少个苹果,才能使得用户要买任意</SPAN></FONT><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 10.5pt">1</SPAN></FONT><FONT size=2><SPAN lang=ZH-CN style="FONT-SIZE: 10.5pt">至</SPAN></FONT><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 10.5pt">1000</SPAN></FONT><FONT size=2><SPAN lang=ZH-CN style="FONT-SIZE: 10.5pt">之间的一个苹果数,都可以给他(卖的时候是整个盒子卖,不能拆盒子的包装)。</SPAN></FONT>
问题补充: 要求用程序實現?
landylee的主页 landylee | 初学一级 | 园豆:175
提问于:2008-06-30 22:32
< >
分享
最佳答案
0
static void Main(string[] args) { int[] appleNumOfBox = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; for (int boxNum = 0; boxNum < 10; boxNum++) { for (int applesToBuy = 1; applesToBuy < 1001; applesToBuy++) { if (!SumCanGet(appleNumOfBox, applesToBuy)) { appleNumOfBox[boxNum] = applesToBuy; break; } } } for (int i = 0; i < 10; i++) { Console.WriteLine(appleNumOfBox[i].ToString()+"\t"); } Console.ReadLine(); } /// <summary> /// 前面的加起来小于要买数量就返回false /// </summary> private static bool SumCanGet(int[] appleNumOfBox, int applesToBuy) { int sum = 0; for (int i = 0; i < 10; i++) { sum += appleNumOfBox[i]; } if (sum < applesToBuy) return false; else return true; } 这个题目很特殊,介于数列{2^(n-1)}前n项的和正好是2^n-1,小于第n+1项,而且可以证明数列{2^(n-1)}之和可以得到1~2^n-1之间的任何数,故有上解 运行结果1, 2, 4, 8, 16...,256,512
花生1 | 小虾三级 |园豆:872 | 2008-07-01 00:22
其他回答(4)
0
不用写程序,直接口算就出来了. 分别放1, 2, 4, 8, 16...,256个(共放了256*2-1=511个,占了9个箱子).最后剩下489个的随便放到最后一个箱子里. 比如,要3个的话: 3=2+1 5=4+1 7=4+2+1 ... 111=64+47=64+32+15=64+32+8+7=64+32+8+4+2+1 ...
deerchao | 园豆:8167 (大侠五级) | 2008-06-30 22:39
0
数学类问题,先找到数学原理,运用其中的数学原理知识在改为设计程序算法问题,最后是运用某种编程语言实现这个程序算法,这是解这种问题的一个考虑步骤!
刚刚 | 园豆:3151 (老鸟四级) | 2008-07-01 05:12
0
10进制转化为二进制的问题,10个盒子表示10个位权,按deerchao的说法就可以实现了
风海迷沙 | 园豆:4453 (老鸟四级) | 2008-07-01 11:36
0
兔子数列问题吧
Birdshover | 园豆:352 (菜鸟二级) | 2008-07-03 22:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册