fish1[fish_lake].fish_num=fish1[fish_lake].fish_num-fish1[fish_lake].dis;//减少下个5分钟钓的鱼数
fish1[fish_lake].count++;//记录钓鱼次数
if(fish1[fish_lake].fish_num<0)//钓鱼数不能为负数
fish1[fish_lake].fish_num=0;
}
if(temp_fish>sum_fish)
{
for(i=1;i<=n;i++)
fish[i].count=fish1[i].count;
sum_fish=temp_fish;
}
//cout<<"temp_fish="<}
if(temp!
=1)
cout<for(i=1;i<=n;i++)
{
if(i==1)
cout<else
cout<<","<}
cout<cout<<"Numberoffishexpected:
"<}
return0;
}
六、实验结果
实验题1结果:
实验题2结果:
(说明:
上图给出的是n个选手的比赛日程表,其中第一列表示1-n个选手,第2列到第n列表示各个选手在第1天到第n-1天的所遇到的选手。
)
实验题3结果:
七、实验分析
1.实验题1逐步删除最大数,若干次循环后,就可以得到目的数。
是简单贪心的应用。
2.实验题2是采用的分治方法,考虑好后,即可解决。
3.实验题3需要思索一番,找到贪心的条件,即以逐步增加钓鱼的湖数为贪心条件,这样就可以假设在任何时间,他可以移动到任何想去的湖,而移动的过程无需时间。
只需在每个5分钟的开始“瞬间移动”到当前5分钟中能钓到最多的鱼的湖中,且只钓5分钟的鱼。
这样逐步积累,等到时间耗尽时,就得到一次分治条件下的最大钓鱼数。
最后,分治完成,得到最大钓鱼数。