36.百马百担问题。有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大中小马多少匹,共有多少组解?

//1、先确定变量关系,将问题分为3个维,用for语句嵌套搭建循环框架
//2、内层用判断语句确定满足题目的条件
//注意,设置一个变量用于计数
​#include<iostream>
using namespace std;

int main()
{
    int m=0;
    for(int i=1;i<=100;i++)
    {
        for(int j=1;j<=100;j++)
        {
            for(int k=1;k<=100;k++)
            {
                if((((i+j+k)==100))&&((3*i+2*j+0.5*k)==100))
                {
                    cout<<"大马:"<<i<<" 中马:"<<j<<" 小马:"<<k;
                    m++;
                    cout<<endl;
                }
            }
        }
    }
    cout<<"共有"<<m<<"组解"<<endl;
    return 0;
}

引申类似问题:换零钱.把一元钱全兑换成硬币(1分2分5分),有多少种兑换方法​

#include<iostream>
using namespace std;

int main()
{
    int Y=100;
    int m=0;
    for(int i=1;i<=Y;i++)
    {
        for(int j=1;j<=Y;j++)
        {
            for(int k=1;k<=Y;k++)
            {
                if(i+2*j+5*k==Y)
                {
                    cout<<"一分钱: "<<i<<" 两分钱: "<<j<<" 五分钱: "<<k;
                    m++;
                    cout<<endl;
                }
            }
        }
    }
    cout<<"一共有"<<m<<"种兑换方式"<<endl;
    return 0;
}

 

posted on 2014-08-07 16:16  Ji_xiaowu  阅读(5560)  评论(0编辑  收藏  举报

导航