首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求解这个算斐波切纳兔子有关问题的算法错哪了(和stl迭代器貌似有点关系)

2013-03-12 
求解这个算斐波切纳兔子问题的算法哪里错了(和stl迭代器貌似有点关系)#include iostream#include stdli

求解这个算斐波切纳兔子问题的算法哪里错了(和stl迭代器貌似有点关系)

#include <iostream>
#include <stdlib.h>
#include <vector>

#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 <int> 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<count;ii++)
{
if(canborn(rabbits.at(ii)))
{
rabbits.push_back(1);
}
}
//handle grow
count=rabbits.size();
for(int ii=0;ii<count;ii++)rabbits.at(ii)++;
//handle death
count=rabbits.size();

for(int ii=0;ii<count;ii++)
{

if(shalldie(rabbits.at(ii)))
{

rabbits.at(ii)=*(rabbits.end());
rabbits.pop_back();
}
}
}
cout<<rabbits.size();
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 迭代器不能解引用的。

热点排行
Bad Request.