POJ1042 钓鱼

来源:互联网 发布:淘宝天猫运营书籍pdf 编辑:程序博客网 时间:2024/04/27 16:34
#include<iostream>using namespace std;int main(){int n,h,f[26]={0},d[26]={0},t[26]={0},fs[26];//h是以小时为单位cout<<"输入湖的数量:"<<endl;//1while(cin>>n){int i,j;if(n==0) break;cout<<"输入拥有的时间:"<<endl;//2cin>>h;h*=12;//以五分钟为单位cout<<"每个湖最初5分钟所能钓到鱼数量的期望值:"<<endl;//3for(i=0;i<n;i++)cin>>f[i];cout<<"每个湖开始钓鱼后以5分钟为周期所能钓到鱼数量期望值减少数量:"<<endl;//4for(i=0;i<n;i++)cin>>d[i];cout<<"第i个湖到第i+1个湖路上所需时间:"<<endl;//5for(i=1;i<n;i++)         cin>>t[i];int time,k;int ans[26][26]={0};memset(ans,0,sizeof(ans));for(i=1;i<=n;i++)//在前i个湖中每次寻找鱼最多的湖下钓  枚举{memcpy(fs,f,sizeof(f));//for(j=0;j<i;j++) fs[j]=f[j];int flag=0;h=h-t[i-1];time=h;//每次寻找鱼最多的湖下钓直到时间用完或所有湖中鱼钓完while(time>0 && flag!=i){k=0;for(j=1;j<i;j++)if(fs[j]>fs[k]) k=j;//寻找前i个湖中鱼数最多的湖,把下标赋给k,k为鱼数最多的湖ans[i][0]+=fs[k];//记录最远能到达第i湖的前提下 能钓到的最多的鱼数ans[i][k+1]++;//记录在每次循环的过程中 在最大鱼量的湖边停留的次数time--;//减去一个单位的时间(相当于五分钟)if(fs[k]>0){fs[k]-=d[k];//过了五分钟减去减少的鱼数if(fs[k]<0) fs[k]=0;//湖里的鱼数减为负值后 给其赋值为0}flag=0;for(j=0;j<i;j++)//检查在没有用完时间的情况下鱼是否钓完了if(fs[j]<=0) flag++;}//将剩余时间加到一个湖中用时ans[i][1]+=time;}k=1;for(j=2;j<=n;j++)if(ans[j][0]>ans[k][0]) k=j;//寻找鱼数最大的值for(j=1;j<=n;j++){cout<<ans[k][j]*5;//记录在每个湖边停留的分钟数if(j!=n)cout<<",";}cout<<endl;cout<<"Number of fish expected:"<<ans[k][0]<<endl;cout<<endl;}return 0;}
原创粉丝点击