zoukankan      html  css  js  c++  java
  • 百马驮百袋粮食问题

    问题如下:

             共有100匹马和100袋粮食,其中大马驮三袋,小马驮两袋,两个小马崽驮一袋,请问大马小马小马崽恰好驮完,各多少匹?


    实现代码1:

    public static void getSum() {
    		int bigHorse = 0;   //大马
    		int smallHorse = 0; //小马
    		int minHorse = 0;   //小马崽,小马崽必须是偶数
    		for (minHorse = 0; minHorse < 100; minHorse += 2) {
    			bigHorse = (3 * minHorse - 200) / 2;
    			smallHorse = 100 - bigHorse - minHorse;
    			if (bigHorse < 0 || smallHorse < 0) {
    				continue;
    			}
    			System.out.println("大马:" + bigHorse + "  小马:" + smallHorse + " 小马崽:" + minHorse);
    		}
    	}
    代码分析:

    列出两个方程式,3x + 2y + z/2 = 100, x + y + z = 100,

    由于小马崽必须是偶数,所以可从小马崽入手,将x和y分别转换为只与z有关的方程式,转换后x = (3z - 200)/2,用小马崽的个数作为循环,判断即可;


    实现代码2:

    public static void getSum2() {
    		for (int bigHorse = 0; bigHorse <= 20; bigHorse++) {
    			int temp = 100 - 5 * bigHorse;
    			if (temp % 3 == 0) {
    				int smallHorse = temp / 3;
    				int minHorse = 100 - bigHorse - smallHorse;
    				if (minHorse % 2 == 0) {
    					System.out.println("大马:" + bigHorse + "  小马:" + smallHorse
    							+ " 小马崽:" + minHorse);
    				}
    			}
    		}
    	}
    代码分析:

    将上面两个方程式,转换成只与x和y有关的方程式,即5x + 3y = 100,其中y = (100 - 5x)/3,因为x,y,z 全是非负数,所以x<=20,以x的个数作为循环判断即可;

  • 相关阅读:
    php中in_array使用注意
    Web 图形可视化 SQL 优化神奇
    Java源码安全审查
    MySQL分库分表方案
    Hystrix 监控数据聚合 Turbine
    idea打包springboot项目没有.original文件
    使用MySQL悲观锁解决并发问题
    使用MySQL乐观锁解决并发问题
    不建议把数据库部署在docker容器内
    Hystrix 监控面板(六)
  • 原文地址:https://www.cnblogs.com/xiaozhang2014/p/5297279.html
Copyright © 2011-2022 走看看