3157: 这是一道简单题
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 139 Solved: 10
[ Submit][ Status][ Web Board]
Description
为了准备即将到来的考试,小欣每天都在努力练习。
考试开始了,总共有 n 道题目。
对于第 i 道题,小欣可以在 ti 分钟内做出来。
考试时长为 T 分钟,问小欣最多可以做对多少道题。
Input
多组数据输入。
对于每一组数据,第一行输入两个整数 n,T ,代表有 n 道题,考试时长为 T 分钟。 (0<=n<=1000,0<=T<=5000)
第二行输入包含 n 个整数 ti ,代表小欣做出第 i 道题所花费的时间。
(0<=ti<=1000)
Output
对于每一组数据输出只有一行,包含一个整数,即小欣最多可以做对的题目数量。
Sample Input
5 60
15 20 20 5 30
5 0
1 2 3 4 5
Sample Output
4
0
#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;
}
咋一看,这道题真的很简单,只需要把每道题所用的时间顺序加起来,所用时间不超过考试时间即可。
#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;
}