模拟法通常基于问题描述,或完成简单的建模,或模拟过程的实现,是最简单的算法设计技术。
用模拟法求解问题的基本思想是对问题进行抽象,将现实世界的问题映射成计算机能够识别的符号表示,将事物之间的关系映射成运算或者逻辑控制,模拟法没有复杂的公式和技巧,只需要读懂问题、明确要求,按着逻辑整理步骤,基本都可以完成。
鸡兔同笼问题:笼子里有若干只鸡和兔子,鸡有两只脚,兔子有四只脚,没有例外情况。已知笼子里脚的数量,问笼子里至少有多少只动物?至多有多少只动物?
#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
请按任意键继续. . .
*/