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

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;}