写一个循环语句.... 循环语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有一个思路与楼主分享,这里比较简单的是用三重循环,从最小的2作为入口,39最多只能由39/2个2相加,最多由39/3个3相加,最多由39/4个4相加,那么以这三个位边界循环去判断就可以了,希望楼主先理清思路了自己尝试去写之后,然后看下面的代码:public static void main(String[] args) { int sum = 39; int count = 0; for (int i = 0; i <= sum / 4; i++) { for (int j = 0; j <= sum / 3; j++) { for (int k = 0; k <= sum / 2; k++) { if (39 == i * 4 + j * 3 + k * 2) { System.out.println(i + "*4+" + j + "*3+" + k + "*2=39"); count++; } } } } System.out.println("一共有" + count + "次"); }输出结果:0*4+1*3+18*2=390*4+3*3+15*2=390*4+5*3+12*2=390*4+7*3+9*2=390*4+9*3+6*2=390*4+11*3+3*2=390*4+13*3+0*2=391*4+1*3+16*2=391*4+3*3+13*2=391*4+5*3+10*2=391*4+7*3+7*2=391*4+9*3+4*2=391*4+11*3+1*2=392*4+1*3+14*2=392*4+3*3+11*2=392*4+5*3+8*2=392*4+7*3+5*2=392*4+9*3+2*2=393*4+1*3+12*2=393*4+3*3+9*2=393*4+5*3+6*2=393*4+7*3+3*2=393*4+9*3+0*2=394*4+1*3+10*2=394*4+3*3+7*2=394*4+5*3+4*2=394*4+7*3+1*2=395*4+1*3+8*2=395*4+3*3+5*2=395*4+5*3+2*2=396*4+1*3+6*2=396*4+3*3+3*2=396*4+5*3+0*2=397*4+1*3+4*2=397*4+3*3+1*2=398*4+1*3+2*2=399*4+1*3+0*2=39一共有37次 //计算从2, 3, 4 三个数中任意取值相加(可以重复),要求它们相加后的和为39的情况有多少种class Demo1{public static void main(String[] args){/*一、2 * a + 3 * b + 4 * c = 39二、因为39是奇数,必须有1个3,上面式子简化为2 * a + 3 * b + 4 * c = 39 - 3 = 36三、所以得出三个不等式:0《a《18 、 0《b《12 、 0《c《9四、三个不等式变成三层循环结合计数器,就可以求出结果*/int count = 0;int number;for(int i = 1;i <= 18;i++){for(int j = 1;j <= 12;j++){for(int k = 1;k <= 9;k++){number = 2 * a + 3 * b + 4 * cif(number == 36){count++;}}}}System.out.println("从2, 3, 4 三个数中任意取值相加(可以重复),要求它们相加后的和为39的情况有:"+count+"种");}} 你确定只是顺序不同也算?如果这样的话,这就是个Fibonacci数列吧。。下面的程序对于n>=6有效int[] a = {1, 1, 2, 2};int n = 39, i = -1;for (n -= 5; n > 0; n--) { i = (i + 1) % 4; a[i] = a[i] + a[(i + 1) % 4] + a[(i + 2) % 4];}System.out.println(a[i]); 这是个类似于百钱买百鸡的问题,我们可以将所有的可能性都尝试一遍,看看那种组合可以满足要求即可,下面是代码,仅供参考public class XX{ public static void main(String[] args) { int i,j,k; for(i=0;i<=9;i++){//这层循环涉及4的个数,39/4=9,4最多有9个 for(j=0;j<=13;j++){//这层循环涉及3的个数,39/3=13 for(k=0;k<=19;k++){//这层循环涉及2的个数,39/2=19 if(4*i+3*j+2*k==39){ System.out.println("这是一个解决方案:"); System.out.println("4*"+i+"+3*"+j+"+2*"+k+"=39"); //这里用乘法的形式输出,也可以改成加法形式输出 } } } } }} 求助:在tomcat5中配虚拟目录 有个输入法不支持64位,谁能解决 java 怎么样做出图片淡入浅出的效果 String比较的问题 关于ip的设定问题,有点想不通 请问这该如何引用 wuti 找错,改错 请问一个random的问题 着急 java io 异常,求教! 求帮忙看看这个关于界面的程序
int sum = 39;
int count = 0;
for (int i = 0; i <= sum / 4; i++) {
for (int j = 0; j <= sum / 3; j++) {
for (int k = 0; k <= sum / 2; k++) {
if (39 == i * 4 + j * 3 + k * 2) {
System.out.println(i + "*4+" + j + "*3+" + k + "*2=39");
count++;
}
}
}
}
System.out.println("一共有" + count + "次");
}输出结果:
0*4+1*3+18*2=39
0*4+3*3+15*2=39
0*4+5*3+12*2=39
0*4+7*3+9*2=39
0*4+9*3+6*2=39
0*4+11*3+3*2=39
0*4+13*3+0*2=39
1*4+1*3+16*2=39
1*4+3*3+13*2=39
1*4+5*3+10*2=39
1*4+7*3+7*2=39
1*4+9*3+4*2=39
1*4+11*3+1*2=39
2*4+1*3+14*2=39
2*4+3*3+11*2=39
2*4+5*3+8*2=39
2*4+7*3+5*2=39
2*4+9*3+2*2=39
3*4+1*3+12*2=39
3*4+3*3+9*2=39
3*4+5*3+6*2=39
3*4+7*3+3*2=39
3*4+9*3+0*2=39
4*4+1*3+10*2=39
4*4+3*3+7*2=39
4*4+5*3+4*2=39
4*4+7*3+1*2=39
5*4+1*3+8*2=39
5*4+3*3+5*2=39
5*4+5*3+2*2=39
6*4+1*3+6*2=39
6*4+3*3+3*2=39
6*4+5*3+0*2=39
7*4+1*3+4*2=39
7*4+3*3+1*2=39
8*4+1*3+2*2=39
9*4+1*3+0*2=39
一共有37次
//计算从2, 3, 4 三个数中任意取值相加(可以重复),要求它们相加后的和为39的情况有多少种
class Demo1
{
public static void main(String[] args){
/*
一、2 * a + 3 * b + 4 * c = 39
二、因为39是奇数,必须有1个3,上面式子简化为2 * a + 3 * b + 4 * c = 39 - 3 = 36
三、所以得出三个不等式:0《a《18 、 0《b《12 、 0《c《9
四、三个不等式变成三层循环结合计数器,就可以求出结果
*/
int count = 0;
int number;
for(int i = 1;i <= 18;i++){
for(int j = 1;j <= 12;j++){
for(int k = 1;k <= 9;k++){
number = 2 * a + 3 * b + 4 * c
if(number == 36){
count++;
}
}
}
}
System.out.println("从2, 3, 4 三个数中任意取值相加(可以重复),要求它们相加后的和为39的情况有:"+count+"种");
}
}
如果这样的话,这就是个Fibonacci数列吧。。下面的程序对于n>=6有效int[] a = {1, 1, 2, 2};
int n = 39, i = -1;for (n -= 5; n > 0; n--) {
i = (i + 1) % 4;
a[i] = a[i] + a[(i + 1) % 4] + a[(i + 2) % 4];
}System.out.println(a[i]);
public class XX
{
public static void main(String[] args) {
int i,j,k;
for(i=0;i<=9;i++){//这层循环涉及4的个数,39/4=9,4最多有9个
for(j=0;j<=13;j++){//这层循环涉及3的个数,39/3=13
for(k=0;k<=19;k++){//这层循环涉及2的个数,39/2=19
if(4*i+3*j+2*k==39){
System.out.println("这是一个解决方案:");
System.out.println("4*"+i+"+3*"+j+"+2*"+k+"=39");
//这里用乘法的形式输出,也可以改成加法形式输出
}
}
}
}
}
}