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 迭代器不能解引用的。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部