可以分拆成多个函数来做,每个函数计算一种长度的组合。两位数字相加时,只能是1-9之间的数,加上10-19之间的数。以此类推。
package test;
public class Sum20 {
public static void main(String[] args) {
sum2num();
System.out.println("----------------");
sum3num();
System.out.println("----------------");
sum4num();
System.out.println("----------------");
sum5num();
}
public static void sum2num(){
for(int i=1;i<10;i++)
for(int j=10;j<20;j++)
if(i+j == 20)
System.out.println(i+"+"+j+"="+20);
}
public static void sum3num(){
for(int i=1;i<6;i++)
for(int j=i+1;j<10;j++)
for(int k=j+1;k<18;k++)
if(i+j+k == 20)
System.out.println(i+"+"+j+"+" + k+"="+20);
}
public static void sum4num(){
for(int i=1;i<4;i++)
for(int j=i+1;j<6;j++)
for(int k=j+1;k<9;k++)
for(int l=k+1;l<15;l++)
if(i+j+k+l == 20)
System.out.println(i+"+"+j+"+" + k+"+" + l+"="+20);
}
public static void sum5num(){
for(int i=1;i<3;i++)
for(int j=i+1;j<4;j++)
for(int k=j+1;k<5;k++)
for(int l=k+1;l<7;l++)
for(int m=l+1;m<11;m++)
if(i+j+k+l+m == 20)
System.out.println(i+"+"+j+"+" + k+"+" + l+"+"+m +"="+20);
}
}