求数值在 1 - 50 之内的任意5个数之和为100 。数值:1,2,3,4,5,6....48,49,50,取其中的任意5个数,但这5个数相加之和要等于100,并将所有这种组合罗列.

来源:互联网 发布:mac word 简体转繁体 编辑:程序博客网 时间:2024/05/03 21:12

/**
 * 求数值在 1 - 50 之内的任意5个数之和为100 。
 * 数值:1,2,3,4,5,6....48,49,50
 * 取其中的任意5个数,但这5个数相加之和要等于100,并将所有这种组合罗列
 * 例: 1+10+19+20+50=100
 *      3+14+16+27+40=100
 */
    import java.util.*;

public class TotalList {
    private LinkedList list = new LinkedList();
    private void TotalEqual100(int begin,int end) {
        for (int i1 = begin; i1 <= end; i1++) {
            for (int i2 = i1 + 1; i2 <= end; i2++) {
                for (int i3 = i2 + 1; i3 <= end; i3++) {
                    for (int i4 = i3 + 1; i4 <=end; i4++) {
                        for (int i5 = i4 + 1; i5 <= end; i5++) {
                            int count = i1+i2+i3+i4+i5;
                            String str = String.valueOf(i1)+"+"+i2+"+"+i3+"+"+i4+"+"+i5;
                            if(count == 100)
                            {
                                str+="="+count;
                                if(!list.contains(str))
                                {
                                    list.add(str);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    private void display()
    {
       Iterator it = list.iterator();
       while(it.hasNext())
       {
           System.out.println(it.next());
       }
    }
    public static void main(String[] args) {
        TotalList tl = new TotalList();
        tl.TotalEqual100(1,50);
        tl.display();
        System.out.println(tl.list.size());
    }

}