本帖最后由 EonianGlutton 于 2010-04-13 12:58:55 编辑

解决方案 »

  1.   


    #include "stdio.h"
    #define MAX_NUM 100
    #define DEQUAL(a,b)   (fabs((a)-(b)) < 1e-6)//输入数组
    double numbers[MAX_NUM];
    //输入数组大小
    int    size;
    //第i个数起到末尾的和
    double sum[MAX_NUM];
    //第i位的数字是否选择上
    int    flag[MAX_NUM];
    //数字的和
    double total;
    //当前累加的和
    double currentSum;
    //输入初始化操作
    void Input()
    {}//根据flag数组输出选择上的数
    void Output()
    {}
    void DFS(int depth)
    { if(depth == size || currentSum+sum[depth] < total)return;
    if(DEQUAL(currentSum+numbers[depth],total))
    {
    flag[depth] = 1;
    Output();
    flag[depth] = 0;
    }
    else if(currentSum+numbers[depth] < total)
    {
    currentSum += numbers[depth];
    flag[depth] = 1;
    DFS(depth+1);
    flag[depth] = 0;
    currentSum -= numbers[depth];
    }
    DFS(depth+1);
    }int main()
    {
    return 0;
    }
      

  2.   

    呀 忘了JAVA区了
    用改成JAVA的么
      

  3.   

    要改成java滴,呵呵
    还有这只是说明问题,实际情况要比这个复杂,其中某个因子可能是千万级数据(可能某个因子为1000万),实际中因子也会达到几十个
      

  4.   

    这帖子都忘了...不好意思了,其实excel里面有定制的宏的,动态规划算法,很好用,多谢各位,结贴