java程序编写:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?

java程序编写:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?,第1张

/*题目:

*

* java程序编写:有100匹马,驮100担货,大马驮3担,中马悔颤棚驮2担,两匹小马驮1担,问有大、中、小马各多少?

*

* 编程思路:

*

* 假设碧则: 大马 x个 中马 y 个 小马 (100-x-y) 个

* 那么 3*x + 2*y + (100-x-y)/2 = 100

*

* 并且 x>=0 y>=0 (100-x-y)>=0[即 x+y<=100]

* 另外 两匹小马驮1担, 说明 小马必须是双数

*

* 列出所有可能性并洞宏输出 多有满足条件的情况即可

* */

public class Demo

{

public static void main(String [] args)

{

getResult()

}

private static void getResult()

{

int count = 0

System.out.println("满足条件的情况有:")

for (int x = 0x<=100x++)

{

for(int y = 0y<=100y++)

{

int z = 100-x-y

if( z%2==0&&3*x + 2*y + z/2 == 100)

{

count++

System.out.println("情况"+count+":大马"+x+"个,"+"中马"+y+"个"+",小马"+z+"个")

}

}

}

}

}

大马最多33匹,中樱激马粗埋最多50匹,小马最多100匹。

#include<stdio.h>

void main(void){

int a=0//大马

int b=0//中马

int c=0//小马驮货数

int d //小马

int n=0 //个数

do{

c=c+1

if(3*a+2*b+c==100&&a+b+2*c==100){

d=2*c

printf("大马、中马、小马分别为:%d,%d,%d\n",a,b,d)

n=n+1

}

if(c==100){

c=0

b=b+1

}

if(b==50){

b=0

a=a+1

}

}while(a<=33)

printf("共有%d种方法。\n",n)

}

输出屏幕脊凳袜是放不下结果的,建议你改成向文件输出。

解题思路:完全跟百钱买百鸡的问题是一样的!设大马,中马,小马的匹数分别为x,y,z可以得到两个方程:x+y+z=1003*x+2*y+z/2=100 将仿租第二个方程变形为:6*x+4*y+z=200从第二个方程变形的方程毁大腊中,我们可以看到,x的最大值为200/6=33.3;即中马,小马都不用,只用大马最多用341<=x<=34 同样中马y的最大值为200/4=50;1<=y<=50再将第三个方程减去第一方程变成纤滑5*x+3*y=100这个方程就是我们简化后的判断条件用枚举法求可的如下的程序:#include<stdio.h>

int main()

{

int x,y,z

for(x=1x<=34x++)

for(y=1y<=50y++)

if(5*x + 3*y == 100)

{

z=100-x-y

printf("x=%d y=%d z=%d\n",x,y,z)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12498482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存