想实现这样的一个功能,但是现在算法我自己有点想不明白了。功能是这样的:        “输入M个数值。我想知道他们之间有么有两个或者更多的加起来等于N的”这样的一个算法改怎么写,最好带上程序。谢谢!!!

解决方案 »

  1.   

    两个for循环就搞定了,这种问题lz自己动动手吧。
      

  2.   

    public static void main(String[] args) {
    int m=9;
    int n=10;
    List<Integer> nums = new ArrayList<Integer>();
    for(int i=0;i<m;i++){
    System.out.println("请输入一个正整数:");
    Scanner input = new Scanner(System.in);
     String str = input.nextLine();
     nums.add(Integer.parseInt(str));

    }
    Map<Integer,Integer> maps = new  HashMap<Integer,Integer>();
    System.out.println(nums);
    for(int i=0;i<nums.size();i++)
    for(int j=i;j<nums.size();j++)
    if(nums.get(i)+nums.get(j)==n){
    maps.put(nums.get(i), nums.get(j));
    }
    Iterator<Entry<Integer,Integer>> iter = maps.entrySet().iterator();
    while(iter.hasNext()){
    Map.Entry<Integer,Integer> entry = (Entry<Integer,Integer>) iter.next();
    Object key=entry.getKey();
    Object val = entry.getValue();
    System.out.println(key+"   "+val);
    }

     }
    楼主,是不是你说的意思,当然,m,n可以通过程序运行时,可以自己输入确定。如果是更多的数相加,就要在加循环,Map里面再套map