阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

3G行业面试出的Java编程题

Posted on 2011-08-25 11:08  阳光VIP  阅读(170)  评论(0编辑  收藏  举报

题目:100匹马背100担粮。 大马一匹背3担,中马一匹背2担。小马2匹背一担。请编程输出所有满足条件的情况.

分析:

依题意:设大马匹数为X(匹),中马y(匹),小马z(匹).那么可以列出方程

x+y+z=100

3x+2y+z/2=100

0<=x<=33

0<=y<=50

0<=z<=100并且z必须能被2整除(因为一只小马背不动一担粮.)

其中x,y,z都是整数.

解出x,y,z

以上的思路用java来实现,如下:

 

class Horse
{
	int x;//大马匹数
	int y;//中马
	int z;//小马
	
	int i=0;//用于统计满足条件的个数
	
	int count_horse;//马的总匹数
	int count_foot;//粮食的总担数
	
	public void Operation()
	{
		for(z=0;z<=100;z++)
		{
			for(y=0;y<=50;y++)
			{
				x=100-y-z;
				if( (x>=0) && (x<=33) && (y>=0) && (y<=50) && (z>=0) && (z<=100) && (z%2==0) )
				{
					if(  ((x+y+z)==100)  &&  ((3*x+2*y+z/2)==100)  )
					{
						i++;
						System.out.println("第【"+i+"】种情况--大马:"+x+" 中马:"+y+" 小马:"+z);	
						
						//检测结果是否满足题意
						
						count_horse=x+y+z;//马的匹数
						
						count_foot=3*x+2*y+z/2;//粮食的总担数
						
						System.out.println("[检测]马的总匹数:"+count_horse+"  粮食的总担数:"+count_foot+"\n");
					}
				}
			}
		}
	}
	
	public static void main(String[]args)
	{
			Horse h=new Horse();
			h.Operation();
	}
}

打印结果:

第【1】种情况--大马:2 中马:30 小马:68
[检测]马的总匹数:100  粮食的总担数:100

第【2】种情况--大马:5 中马:25 小马:70
[检测]马的总匹数:100  粮食的总担数:100

第【3】种情况--大马:8 中马:20 小马:72
[检测]马的总匹数:100  粮食的总担数:100

第【4】种情况--大马:11 中马:15 小马:74
[检测]马的总匹数:100  粮食的总担数:100

第【5】种情况--大马:14 中马:10 小马:76
[检测]马的总匹数:100  粮食的总担数:100

第【6】种情况--大马:17 中马:5 小马:78
[检测]马的总匹数:100  粮食的总担数:100

第【7】种情况--大马:20 中马:0 小马:80
[检测]马的总匹数:100  粮食的总担数:100

*/