【码图C++】#343 函数实现类似百钱百鸡问题

函数实现类似百钱百鸡问题

通过课程进入题 号:343函数实现类似百钱百鸡问题语言要求:C++
函数求百钱百鸡问题的变形: 
原百钱百鸡问题如下:
一只公鸡值5钱,
一只母鸡值3钱,
三只小鸡值1钱,
现在用百钱买百鸡,
请问公鸡、母鸡、小鸡各多少只?
现修改要求,实现下面的函数:
int howMany(int money,int m,int cockMoney,int henMoney,int chickenMoney,int *cockNum,int *henNum,int *chickenNum); 
函数功能:根据输入的总的价钱money,
总的鸡的数量m,每种鸡的价格,
求满足要求的各种鸡的数量。
如果函数有解,只需要求出其中一个解即可。 
输入参数:
int money: 总共花的钱数
int m:总的鸡的数量 
int cockMoney:1只公鸡的价格
int henMoney:1只母鸡的价格
int chickenMoney:一只小鸡的价格
 输出参数:
 int *cockNum:公鸡数量
 int *henNum:母鸡数量
 int *chickenNum:小鸡数量
 函数返回值:有解返回1,无解返回0,输入参数不合法,返回-1 
int howMany(int money, int m, int cockMoney, int henMoney, int chickenMoney, int *cockNum, int *henNum, int *chickenNum) {
    if(money <= 0 || m <= 0 || cockMoney <= 0 || henMoney <= 0 || chickenMoney <= 0) {
        return -1; //输入参数不合法,返回-1
    }
    
    int cock = 0; //公鸡数量
    int hen = 0; //母鸡数量
    int chicken = 0; //小鸡数量
    
    for(cock = 0; cock <= money / cockMoney && cock <= m; cock++) { //枚举公鸡数量
        for(hen = 0; hen <= money / henMoney && (cock + hen) <= m; hen++) { //枚举母鸡数量
            chicken = m - cock - hen; //根据总鸡数求出小鸡数量
            if(cock * cockMoney + hen * henMoney + chicken * chickenMoney == money && chicken % 3 == 0) { //如果价格总和符合要求且小鸡数量是3的倍数
                *cockNum = cock;
                *henNum = hen;
                *chickenNum = chicken;
                return 1; //有解,返回1
            }
        }
    }
    
    return 0; //无解,返回0
}

函数主要采用了暴力枚举的方法,先枚举公鸡数量,再枚举母鸡数量,最后要根据总鸡数计算小鸡数量,再判断是否符合条件。函数返回值为1时表示有解,函数返回值为0时表示无解,函数返回值为-1时表示输入参数不合法。公鸡、母鸡、小鸡的数量保存在函数的输出参数中。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值