如何从“(1+x)(1+x2)(1+x3)”转化到“1+x+x2+2x3+x4+x5+x6”?x2是指x的平方,2x3就是2*x的3次方。
如何做一个函数,输入是“(1+x)(1+x2)(1+x3)”的字符串,输出是“1+x+x2+2x3+x4+x5+x6”的字符串?或者
如何编程解决整数拆分的问题。
若有1克、2克、3克的砝码各一枚,问能称出那几种重量?有几种可能方案?
(1+x)(1+x2)(1+x3)=1+x+x2+2x3+x4+x5+x6
从上面的母函数知可称出从1克到6克,系数便是方案数。例如上面有2x3 项,即称出3克的方案有2:3=1+2=3手算是可以算出来,可是怎么编程实现啊,快救救我!!!

解决方案 »

  1.   

    1.实现字符串的分解,当然是一个一个的扫描罗,碰到(括号准备链表,
    然后开始读,把系数和指数保存在一个节点里面。碰到)结束。针对上面你给的例子,会产生3各链表
    2.实现多项式的乘法,然后一个一个得算就行了
    不过我觉得对于这道题目,没有这个必要。
    比如,如果就是想看看某个数能否用1 2 3相加得到,分别一枚(也可以不只
    稍微修改以下程序就可以了)
    你可以产生一个二进制数,他的每一位分别对应1 2 3,0表示不选,1表示选
    比如101 表示选1 3,这样产生的就是1+3=4
    所以,如果有了这个二进制数,就一定能够得到结果。
    而产生这样的二进制数(n位的所有情况)不是很难的,提示你一种简单的方法,用循环就可以实现了。如果位数很多,或者不确定,那就用递归产生。
    还有就是如果不止一枚,你就把它看作不同的数,比如1 2 3,2有2枚
    你完全可以看作是4各不同的数字,用4位2进制同上面的方法就解决了当然,解决上面的问题的方法还有很多,我只是刚刚看了后想到而已。如果
    有问题,或者有更好的方法希望大家指出。谢谢。