java算法题

1-19的整数和为20如:
1+19=20
1+2+17=20
1+2+3+14=20
1+2+3+4+10=20

2+18=20
2+3+15=20
2+3+4+11=20
2+3+4+5+6=20

3+17=20
3+4+13=20
3+4+5+8=30

  4+16=20
  4+5+11=20

    5+15=20
5+6+9=20

     6+14=20

[color=red][b]注:每个加数不能重复比如(4+5+5+6=20 5和5重复不可以。1+19和19+1也不可以2+18和18+2等等)[/b][/color]

7个回答

[code="java"]

public class Test {
public static void main(String[] args) {
int value=1; //初始值(1-19)
boolean flag=true ; //标识位
while(true){
int count=0; //自增变量
int sum=value; //保存累加结果的变量
String tempstr=String.valueOf(value); //以字符串的形式保存累加信息
while(flag){
if(count>0){
sum+=value+count;
tempstr+=" + "+(value+count);
}else {
sum+=count;
tempstr=String.valueOf(value);
}
if(value+count>= (20-sum)){
System.out.println("********************************");
break;
}
System.out.println(tempstr+" + "+(20-sum)+" = 20");
count++;
}
if(value==19)break; //value取值为19时,跳出循环
value++;

}
}
}

[/code]

你要干嘛啊?求什么啊?说明白啊

怎么也是这个问题?楼上的,楼主的意思应该是你要把所有的那个等式打印出来,即使不打印也应该是算法上的限制,我在想了,还没找到。。。 :o

1 + 19 = 20
1 + 2 + 17 = 20
1 + 2 + 3 + 14 = 20
1 + 2 + 3 + 4 + 10 = 20


2 + 18 = 20
2 + 3 + 15 = 20
2 + 3 + 4 + 11 = 20
2 + 3 + 4 + 5 + 6 = 20


3 + 17 = 20
3 + 4 + 13 = 20
3 + 4 + 5 + 8 = 20


4 + 16 = 20
4 + 5 + 11 = 20


5 + 15 = 20
5 + 6 + 9 = 20


6 + 14 = 20


7 + 13 = 20


8 + 12 = 20


9 + 11 = 20


不知是不是楼主要的内容呢?

哈哈,我想了最垃圾的写法
[code="java"]
public class Test1 {

public static void printFormula(int[] value){

    for(int i=1;i<value.length;i++)
    {
        String valueStr = "公式"+ value[i] +":" + value[i] + "";
        int tempS = 0;
         StringBuffer temp=new StringBuffer();
        for(int s=i+1;s<value.length;s++)
        {
               tempS += value[s];
               temp.append("+").append(value[s]);
            if(value[i]+value[s]==20){
                System.out.println(valueStr +"+"+value[s]);
            }
            for(int j=s+1;j<value.length;j++)
            {
                if(value[i]+tempS+value[j]==20){
                    System.out.println(valueStr +temp+"+"+value[j]);
                }
            }
        }

    }

}  


public static void main (String rags[]){
 int value[]= new int[19];
 for(int i=0;i<value.length;i++){
     value[i]=1+i;
 }
     Test1.printFormula(value);
}

}
[/code]

数组生成错了!!

[code="java"]public static void main (String rags[]){
int value[]= new int[20];
for(int i=0;i<value.length;i++){
value[i]=i;
}
Test1.printFormula(value);
}[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐