2217944_pe.c

来自「北大大牛代码 1240道题的原代码 超级权威」· C语言 代码 · 共 89 行

C
89
字号
 
#  include  <stdio.h>
#  include  <string.h>

int  n,  h,  MAX;
int  f[30],  d[30],  t[30],  sum[30];

void  solve()
{
        int  i,  j,  tmp,  fish;
        int  T[30],  max,  time[30],  ans[30];

        MAX  =  -1;
        for(i  =  0;  i  <  n;  i++)
        {
                tmp  =  h;
                fish  =  0;
                tmp  -=  sum[i];
                memset(time,0,sizeof(time));
                if(tmp<0)
                        break;
                for(j  =  0;  j  <=  i;  j++)
                        T[j]  =  f[j];
                while(tmp>0)
                {
                        max  =  0;
                        for(j  =  0;  j  <=  i;  j++)
                                if(T[j]>T[max])
                                        max  =  j;
                        if(!T[max])
                                break;
                        if(d[max])
                        {
                                fish  +=  T[max];
                                T[max]  -=  d[max];
                                tmp--;
                                time[max]++;
                                if(T[max]<0)
                                        T[max]  =  0;
                        }
                        else
                        {
	          fish += T[max]*tmp;
	          time[max] += tmp;
	          tmp = T[max]  = 0;
                        }
                }
                time[0]  +=  tmp;
                if(fish>MAX)
                {
                        MAX  =  fish;
                        for(j  =  0;  j  <  n;  j++)
                                ans[j]  =  time[j];
                }
        }
        for(j  =  0;  j  <  n-1;  j++)
                printf("%d,  ",ans[j]*5);
        printf("%d",ans[n-1]*5);
        printf("\nNumber  of  fish  expected:  %d\n\n",MAX);
}

int  input()
{
        int  i;

        scanf("%d",&n);
        if(!n)
                return  0;
        scanf("%d",&h);
        h  *=  12;
        for(i  =  0;  i  <  n;  i++)
                scanf("%d",&f[i]);
        for(i  =  0;  i  <  n;  i++)
                scanf("%d",&d[i]);
        sum[0]  =  t[0]  =  0;
        for(i  =  1;  i  <  n;  i++)
        {
                scanf("%d",&t[i]);
                sum[i]  =  t[i]+sum[i-1];
        }
        solve();
        return  1;
}

int  main()
{
        while(input());
        return  1;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?