*
* 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)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)