模拟法-鸡兔同笼问题

模拟法通常基于问题描述,或完成简单的建模,或模拟过程的实现,是最简单的算法设计技术。

用模拟法求解问题的基本思想是对问题进行抽象,将现实世界的问题映射成计算机能够识别的符号表示,将事物之间的关系映射成运算或者逻辑控制,模拟法没有复杂的公式和技巧,只需要读懂问题、明确要求,按着逻辑整理步骤,基本都可以完成。

鸡兔同笼问题:笼子里有若干只鸡和兔子,鸡有两只脚,兔子有四只脚,没有例外情况。已知笼子里脚的数量,问笼子里至少有多少只动物?至多有多少只动物?

#include <iostream>
using namespace std;
void Feets(int n,int &Maxnum,int &Minnum)
{
	if(n % 2 != 0)  //如果输入的n是奇数,则没有满足的解
	{
		Maxnum = 0;
		Minnum = 0;
	}
	else if(n % 4 == 0)  //当n是偶数且能被4整除
	{
		Maxnum = n / 2;
		Minnum = n / 4;
	}
	else   //当n是偶数不能被4整除
	{
		Maxnum = n / 2;
		Minnum = (n - 2) / 4 + 1;
	}

}
int main()
{
	int Maxnum,Minnum,n;
	cin>>n;
	Feets(n,Maxnum,Minnum);
	cout<<Maxnum<<endl;
	cout<<Minnum<<endl;
	system("pause");
	return 0;
}


/*
输出结果:
16
8
4
请按任意键继续. . .
*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值