int[] a = {100,200,300,400,500};给你这几个数,让你把这里面任意加起来=600的数打印出来,不能重复

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【dxb828】截止到2008-07-30 10:51:56的历史汇总数据(不包括此帖):
    发帖的总数量:45                       发帖的总分数:120                      每贴平均分数:2                        
    回帖的总数量:18                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:45                       结贴的总分数:120                      
    无满意结贴数:38                       无满意结贴分:660                      
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:84.44 %               无满意结分率:550.00%                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=dxb828
      

  2.   

    public static void main(String[] args) {
    int[] a = {100,200,300,400,500};
    for(int i=0;i<a.length;i++){
    for(int j=i+1;j<a.length;j++){
    if(a[i]+a[j]==600){
    System.out.println(a[i]+"+"+a[j]+"==600");
    }
    }
    }
    }
      

  3.   

    嘿嘿,好久不玩这个了。试试看。package TestCode;/**
     *
     * @author www.baizeju.com
     */public class TestCode {
        
        public static void main( String[] args ) {
            int[] data = {100,200,300,400,500};
            int nTarget = 600;
            int nItemNumber = data.length;
            
            int nIndex;
            int nLoopValue=(int) Math.pow(2,nItemNumber);
            for(nIndex=0;nIndex<nLoopValue;nIndex++){
                int nResult=0;
                int nLoop=nIndex;
                String szResult="";
                for(int nIndex1=nItemNumber-1;nIndex1>=0;nIndex1--) {
                    if(nLoop>=(int)Math.pow(2, nIndex1)) {
                        nResult+=data[nIndex1];
                        szResult+= Integer.toString(data[nIndex1])+" ";
                        nLoop-=(int)Math.pow(2, nIndex1);
                    }
                }
                if( nResult==nTarget) {
                    System.out.println( szResult) ;
                }
            }
        }
    }
      

  4.   

    在你事先无法确定需要判断的数字个数的情况下,没法写固定层数的循环来处理。
    用一个二进制数字的0、1来判断是比较容易实现的一种方法。当然也是效率最差的,呵呵,实际就是用二进制来控制多层循环了。
    实际可可以再优化一点,比如当nResult已经大于nTarget的时候就应该continue了。