高手 求算法 有50个正整数 其中有不定个数的和 等于某一个指定的正整数求出那些数的和等于那个指定的正整数算法应该如何写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.frog.test;import java.util.ArrayList;public class Qemperor { ArrayList<Integer> al = new ArrayList<Integer>(50); ArrayList<Integer> rl = new ArrayList<Integer>(50); public Qemperor(){ //初始化,假设已排序,如果没排序 那么自己排序先 al.add(new Integer(50)); al.add(new Integer(45)); al.add(new Integer(40)); al.add(new Integer(35)); al.add(new Integer(30)); al.add(new Integer(25)); al.add(new Integer(20)); al.add(new Integer(10)); al.add(new Integer(5)); } public boolean compute(Integer left, int index ){ if(left == 0){ return true; }else if(index >= al.size()){ return false; }else if(left > 0){ rl.add(al.get(index)); al.remove(index); return compute(left - rl.get(rl.size()-1),index); }else{ al.add(0,rl.get(rl.size()-1)); rl.remove(rl.size()-1); return compute(left + al.get(0),++index); } } public void print(){ System.out.println("reault list:"); for(int i=0; i<rl.size(); i++){ System.out.println(rl.get(i)); } System.out.println("data left list:"); for(int i=0; i<al.size(); i++){ System.out.println(al.get(i)); } } public static void main(String[] args) { Qemperor q = new Qemperor(); if(q.compute(75, 0)){ q.print(); System.out.println("Yes"); }else{ System.out.println("Oh no!"); } }} 1.lz 这个问题不是排序的问题,也不是排列组合算法上叫 背包问题,你可以搜下,2.我上面给出了一个 java 的程序 求得一个解 ,排序是为了优化算法,3.如果求 全解算法 比求一个解算法复杂多了 HttpClient中返回页面的问题! 大虾,看看这道编程题怎么做? 关于struts2的奇怪问题 用java如何实现软件注册和正版验证 请问什么开发工具可以自动提示javascript的语法? 关于input框onblur调用方法中的focus冲突问题 关于web项目字符集问题 关于springMVC日志管理如何实现自动化日志管理 怎样把java里提示的错误用JSP页面显示出来? 那一大侠帮助我修改一下程序 关于Jquery我在IE里面能用在火狐下怎么就没效果啊 几个关于struts2和spring注解的问题
ArrayList<Integer> al = new ArrayList<Integer>(50);
ArrayList<Integer> rl = new ArrayList<Integer>(50);
public Qemperor(){
//初始化,假设已排序,如果没排序 那么自己排序先
al.add(new Integer(50));
al.add(new Integer(45));
al.add(new Integer(40));
al.add(new Integer(35));
al.add(new Integer(30));
al.add(new Integer(25));
al.add(new Integer(20));
al.add(new Integer(10));
al.add(new Integer(5));
} public boolean compute(Integer left, int index ){
if(left == 0){
return true;
}else if(index >= al.size()){
return false;
}else if(left > 0){
rl.add(al.get(index));
al.remove(index);
return compute(left - rl.get(rl.size()-1),index);
}else{
al.add(0,rl.get(rl.size()-1));
rl.remove(rl.size()-1);
return compute(left + al.get(0),++index);
}
}
public void print(){
System.out.println("reault list:");
for(int i=0; i<rl.size(); i++){
System.out.println(rl.get(i));
}
System.out.println("data left list:");
for(int i=0; i<al.size(); i++){
System.out.println(al.get(i));
}
}
public static void main(String[] args) {
Qemperor q = new Qemperor();
if(q.compute(75, 0)){
q.print();
System.out.println("Yes");
}else{
System.out.println("Oh no!");
}
}}
算法上叫 背包问题,你可以搜下,
2.我上面给出了一个 java 的程序 求得一个解 ,排序是为了优化算法,
3.如果求 全解算法 比求一个解算法复杂多了