跪求版主解答

jave2008 2013-06-11 01:40:04
已知有三种价格的产品,产品A(可以卖1、2、3、4元)产品B(可以卖5、6、7元)产品C(可以卖8、9、10元),产品数量比例:产品A、产品B、产品C的比例可以为3:3:4也可以为其它比例,但总比例和为10,已知三种产品的价格总和为149元,问可以怎么组合着卖?多少产品A(1,2,3,4元的分别是多少)?产品B(5、6、7元的产品分别是多少)?产品C(8、9、10元的产品分别是多少)?
...全文
239 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程点滴 2013-06-17
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
下面是我的算法:

public class JavaTest {
	public static void main(String[] args) {
		for (int a = 1; a <= 4; a++) {
			for (int b = 5; b <= 7; b++) {
				for (int c = 8; c <= 10; c++) {
					for (int x = 0; x <= 149; x++) {
						for (int y = 0; y <= 149 / 5; y++) {
							for (int z = 0; z <= 149 / 8; z++) {
								if (a * x + b * y + c * z == 149) {
									print(a, b, c, x, y, z);
								}
							}
						}
					}
				}
			}
		}
	}

	private static void print(int a, int b, int c, int x, int y, int z) {
		// 算出x,y,z的最大公约数
		int i = divisor(divisor(x, y), z);
		x /= i;
		y /= i;
		z /= i;
		//去掉最简比例中三个数之和大于10的比例数
		if (x + y + z <= 10) {
			int j = x + y + z;
			//判断最简比例能不能转化为和为10的比例数,如果能就打印出结果
			if (10 % j == 0) {
				System.out.println("它们的价格为: " + a + ", " + b + ", " + c);
				System.out.println("它们的比例为: " + (10/j) * x + ": " + y + ": " + z);
			}
		}
	}

	/**
	 * 利用辗转相除法求两个数的最大公约数
	 */
	private static int divisor(int x, int y) {
		int a = 0;
		if (x != 0 && y != 0) {
			if (x > y) {
				while (true) {
					a = x % y;
					if (a == 0)
						return y;
					x = y;
					y = a;
				}
			} else {
				while (true) {
					a = y % x;
					if (a == 0)
						return x;
					y = x;
					x = a;
				}
			}
		} else {
			if (x == 0)
				return y;
			if (y == 0)
				return x;
		}
		return 0;
	}
}

结果很意外,就一种方案:10:0:0。也不知道对不对。。。
jave2008 2013-06-12
  • 打赏
  • 举报
回复
版主哪里去了啊?
jave2008 2013-06-12
  • 打赏
  • 举报
回复
再把问题搞简单点,看有没有人会 产品A数量为2(可以卖1、2、3、4元)产品B数量为8(可以卖5、6、7元)产品C数量为10(可以卖8、9、10元)已知三种产品的价格总和为149元问产品A(1,2,3,4元的产品分别是多少)?产品B(5、6、7元的产品分别是多少)?产品C(8、9、10元的产品分别是多少)?
jave2008 2013-06-12
  • 打赏
  • 举报
回复
这么辛苦赞一个,但结果不对
流星陨落 2013-06-11
  • 打赏
  • 举报
回复
花木兰1闪21A 2013-06-11
  • 打赏
  • 举报
回复
没看懂是什么意思。。。求所有的组合并且数量满足一定的比例,所有价格加在一起为149?如果这样讲最后问怎么组合着卖是什么意思?感觉像是求最值....表示看不懂....
菖蒲老先生 2013-06-11
  • 打赏
  • 举报
回复
那就等高手吧,看看能否在半小时之内执行出结果。 149太大了,49还差不多。
jave2008 2013-06-11
  • 打赏
  • 举报
回复
此题必有蹊跷
菖蒲老先生 2013-06-11
  • 打赏
  • 举报
回复
首先撇开比例,一共有121607276中组合,你怎么看?

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧