这是一道简单题

时间: 1ms        内存:128M

描述:

为了准备即将到来的考试,小欣每天都在努力练习。
考试开始了,总共有 n 道题目。
对于第 i 道题,小欣可以在 ti 分钟内做出来。
考试时长为 T 分钟,问小欣最多可以做对多少道题。

输入:

多组数据输入。
对于每一组数据,第一行输入两个整数 n,T ,代表有 n 道题,考试时长为 T 分钟。 (0<=n<=1000,0<=T<=5000)
第二行输入包含 n 个整数 ti ,代表小欣做出第 i 道题所花费的时间。(0<=ti<=1000)

输出:

对于每一组数据输出只有一行,包含一个整数,即小欣最多可以做对的题目数量。

示例输入:

5 60
15 20 20 5 30
5 0
1 2 3 4 5

示例输出:

4
0

提示:

参考答案(内存最优[1092]):

#include <stdio.h>  
#include <stdlib.h>  
  
int main()  
{  
    int i,j,n;  
    int T;  
   while(scanf("%d %d",&n,&T)!=EOF)  
   {  
       int sum=0;  
    int ti[n];  
    for(i=0;i<n;i++)  
        scanf("%d",&ti[i]);  
for(i=0;i<n-1;i++)  
    for(j=0;j<n-i-1;j++)  
{  
    if(ti[j]>ti[j+1])  
    {  
        int x;  
        x=ti[j+1];  
        ti[j+1]=ti[j];  
        ti[j]=x;  
    }  
}  
    for(i=0;i<n;)  
  
    {  
        if(sum+ti[i]<=T)  
        {  
            sum=sum+ti[i];  
            i++;  
        }  
        else  
            break;  
    }  
    printf("%d\n",i);  
   }  
    return 0;  
}  

参考答案(时间最优[0]):

#include<stdio.h>
int cmp( int *a, int *b)
{
   return *a-*b;
}
int main()
{
    int a[1001];
    int sum,i,n,t,k;
    while(~scanf("%d %d",&n,&t))
    {
      k=sum=0;
     for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    qsort(a,n,sizeof(a[0]),cmp);
    for(i=0;i<n;i++)
    {
        if(k+a[i]<=t)
        {
            k+=a[i];sum++;
        }
        else break;
    }
    printf("%d\n",sum);
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。