华为机试

来源:互联网 发布:java架设http代理 编辑:程序博客网 时间:2024/06/10 10:02

1, 分苹果,M个苹果分到N个篮子里,篮子可以为空,另外,以下情况为同种分法:3,1,1与1,3,1;  输入:M N,输出可以分的种数。

  分析:参考了网上用递归的方法后,运用相同的思路,可以用类似DP的方法做出该题目。

我们用data[j][i]表示篮子为j,苹果为i个时候合乎要求的分苹果方案,则:

    <1>初始化:data[1...N][0]=1;data[1][1...M]=1;(简单理解下,当篮子数j1时,方案数为1;当苹果数目i0时,方案数为1)

    <2>转移:如果i<j,那么,data[j][i]=data[j-1][i];(此时证明篮子数必然有空的,去掉一个也无所谓)

                    否则,data[j][i]=data[j][j-i] + data[j-1][i](此时,分配方案有两种,一种是篮子都占用了,这一部分的分配方案数目为data[j][i-j];另一种是篮子仍然有空的,所以去掉一个篮子也无所谓,data[j-1][i]);

代码:



3.输入汉语拼音的数,如JiuQianJiuBaiJiuShiJiu,注意每个数的拼音 的首字母大写,如“Ling”,”Yi”,”Er”,”San”,”Si”,”Wu”,”Liu”,”Qi”,’’Ba”,”Jiu”,”Shi”,”Bai”,”Qian”,”Wan”,输出阿拉伯数字:9999。

如输入:SanBaiLingSan

输出:303


3, 输入年月日,输出该日期在一年中的第几天。如

      输入:20121231

      输出:366


0 0
原创粉丝点击