今天写了这个题,发现很简单。
首先就是把每个作业的价值除以时间,得到每小时能得到的价值赋给b数组。这样就可以取部分价值了。
然后步骤就和上次的牛奶的题目差不多了,每次都找出单个小时内价值最大的作业,然后计算,如下:
第二个题目:
这个题目很简单,只要将两排数字进行排序,然后一个一个按顺序比较大小,并记录次数就好了。
#includeint a[1000],b[1000]; void paixu(int a[],int n) { int t; for(int i = 0 ; i < n - 1 ; i ++){ for(int j = i +1 ; j < n ; j ++){ if(a[i]>a[j]){ t=a[i]; a[i]=a[j]; a[j]=t; } } } return ; } int ying(int a[],int b[],int n) { int t=0,m=-1; for(int i = 0 ; i < n ; i ++){ for(int j = m+1 ; j < n ; j ++){ if(a[i]>b[j]){ t++; m=j; break; } } } return t; } int main() { int n,t=0; while(scanf("%d",&n)&&n!=0){ t++; for(int i = 0 ; i < n ; i ++){ scanf("%d",&a[i]); } for(int i = 0 ; i < n ; i ++){ scanf("%d",&b[i]); } paixu(a,n); paixu(b,n); printf("Case %d:n",t); if(ying(a,b,n) > n/2){ printf("YESn"); } else{ printf("NOn"); } } return 0; }
我定义了两个函数,一个用来排序,另一个用来记录赢的次数,如果赢得次数大于一半,就输出yes。



