zoukankan      html  css  js  c++  java
  • 【慢慢学算法】:百鸡问题

       题目描述:   

        用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。

    输入:

        测试数据有多组,输入n。

    输出:

        对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。

    样例输入:
    40
    样例输出:
    x=0,y=0,z=100
    x=0,y=1,z=99
    x=0,y=2,z=98
    x=1,y=0,z=99

    解题思路:
    先将题意转化为一个数学问题,然后列出相应的方程,化简方程,然后通过对剩下的变量进行穷举,输出符合条件的结果。
    代码:
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int main()
     5     {
     6     int n;
     7     while(cin >> n)
     8     {
     9         for(int i = 0; i <= 100; i++)
    10         for(int j = 0; j <= 100; j++)
    11         {
    12             if((14 * i + 8 * j) <= n * 3 - 100)
    13             printf("x=%d,y=%d,z=%d\n",i,j,100-i-j);
    14             else
    15             break;
    16         }
    17     }
    18     return 0; 
    19     }

       收获:   

    1. C++的cout输出比C中的printf慢!!!在这个题目中分别为10ms和50ms...

       2. 优先将题目转化为数学问题进行化简解决,然后在通过程序实现,不要一上来就闷头写代码。

         3. 方程中的未知数可以在程序中拿穷举来解决



  • 相关阅读:
    VBA键码常数
    枚举
    海龟交易法则及头寸
    HQL.TOP
    jquery.cookie
    机械操作产品分析.
    Repeater排序2
    Repeater排序
    json
    LoginStatus注销控件
  • 原文地址:https://www.cnblogs.com/VortexPiggy/p/2482700.html
Copyright © 2011-2022 走看看