java 实现斐波切纳数列,求解这个算斐波切纳兔子有关问题的算法错哪了(和stl迭代器貌似有点关系)...
求解这个算斐波切纳兔子问题的算法哪里错了(和stl迭代器貌似有点关系)
#include
#include
#include
#define BORN_AGE 3
#define DIE_AGE 12
using namespace std;
bool canborn(int age);
bool shalldie(int age);
int main()
{
int month=0,count=1;
do
{
cin>>month;
}
while(month<=0);
vector rabbits;
rabbits.clear();
rabbits.push_back(1);
count=rabbits.size();
for(int i=1;i<=month;i++)
{
//handle born
count=rabbits.size();
for(int ii=0;ii
{
if(canborn(rabbits.at(ii)))
{
rabbits.push_back(1);
}
}
//handle grow
count=rabbits.size();
for(int ii=0;ii
//handle death
count=rabbits.size();
for(int ii=0;ii
{
if(shalldie(rabbits.at(ii)))
{
rabbits.at(ii)=*(rabbits.end());
rabbits.pop_back();
}
}
}
cout<
system("pause");
return 0;
}
bool shalldie(int age)
{
if(age>=DIE_AGE)return true;
return false;
}
bool canborn(int age)
{
if(age>=BORN_AGE)return true;
return false;
}
就是输入11时(兔子祖先的寿命将达到12个月,就是说它的死期到了)
然后就出问题了。。貌似是溢出(好吧相当于野指针)
算法
vector
------解决方案--------------------
*(rabbits.end()) 有问题,end 迭代器不能解引用的。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
