首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

写一个算法计算随便数的和相加等于6

2013-01-11 
写一个算法计算任意数的和相加等于6如题,有1,3,2,4,5这几个数字,把这几个数相加结果等于6结果可以是1,3,22

写一个算法计算任意数的和相加等于6
如题,有1,3,2,4,5这几个数字,把这几个数相加结果等于6
结果可以是
1,3,2
2,4
1,5

下面的代码的结果有问题,帮改改


int result=6;
int array [] = new int[]{1,3,2,4,5};
for(int i=0;i<array.length;i++){
int temp = 0;
for(int j=i;j<array.length;j++){
temp = temp+array[j];
if(temp==result){
for(int k=i;k<=j;k++){
System.out.print(" "+array[k]);
}
System.out.println();
}
}
}
//result
// 1 3 2
// 2 4

[解决办法]

public Map get(int result,Map<String,Object> map,boolean flag){

int array [] = new int[]{1,3,2,4,5};
for(int i=0;i<array.length;i++){
int value=result-array[i];

if((value!=array[i] 
[解决办法]
 flag) && value>0){
for(int j=0;j<array.length;j++){
if(value==array[j]){
if(!map.containsKey(String.valueOf(array[i])) && !flag){
map.put(String.valueOf(value), array[i]);
}else if(flag){
if(result>array[i] && array[i]>array[j]){
map.put(result+" "+array[i], array[j]);
}
}
}else{
int two=value-array[j];
if(two>0){
if(value+array[j]<6){
get(two,map,true);
}

}

}
}
}

}
return map;
}
public static void main(String[] args) throws JDOMException, IOException{
TmsAssignOrderOldNewInterfaceImpl ei=new TmsAssignOrderOldNewInterfaceImpl();
Map<String,Object> map=new HashMap<String,Object>();
map=ei.get(6, map,false);
for(String key:map.keySet()){
System.out.println(key+" "+map.get(key));
}
}


输出结果 3 2 1
        5   1
        4   2
[解决办法]
引用:
Java code??



1234567891011121314151617181920212223242526272829303132333435363738394041

public Map get(int result,Map<String,Object> map,boolean flag){                   int array [] = new int……


这个算法肯定是有问题的  还有 2 2 2,2 2 1 1,4 1 1,3 1 1 1 这些组合呢?
[解决办法]
引用:
引用:Java code??



1234567891011121314151617181920212223242526272829303132333435363738394041

public Map get(int result,Map<String,Object> map,boolean flag){ ……

人家是不需要重复数相加,那你这样,那还有3,3了。
[解决办法]
引用:
引用:呵呵,这个题目之意和他给出的答案,就是这逻辑。
LZ,如果满足需求,记得散分,嘿嘿!


  int array [] = new int[]{1,3,2,4,5,2};这样还是不符合的



LZ,你这有数据有新增了吧。这样的话,算法有的做修改了!
主要是思路的对的,先考虑2个数相加的,符合要求的记录下。
之后用6减去其中一个,之后得到的,在递归调用下,在进行判断取值!

热点排行