题目描述
小明的表哥为他推荐了一些学习两性知识的小视频(AV),这些视频的播放时间长短不完全相同。现在给定一段时间,你能告诉XP他最多可以看多少个视频吗?每个视频的播放时间和给定的总时间均用分钟为单位。
输入
单组输入数据
第一行为m n
m为给定时间长度(分钟)(0<n,m<=1000)
n表示视频个数
接下来是n个整数代表每个视频的播放时间(每个视频播放时间为不超过1000的正整数)
输出
输出一个整数代表小D最多可以看的视频数
样例输入
84 6
65 46 18 76 79 3
样例输出
3
思路:
1.使用冒泡法或者选择法对数组进行排序
2.建立一个判定函数,进行判定和结果输出
边界条件:
1.总时间时间不够看完最短AV。
2.总时间正好能看完全部AV。
#include<stdio.h>
int m,n,a[100];
int main()
{
void judge(int m);
int i,j,k,temp,b;
scanf("%d%d",&m,&n);
for(i=0;i<n;i++) //循环输入数组a的元素值
scanf("%d",&a[i]);
for(j=0;j<n-1;j++) //该for循环为选择法排序(由小至大)
{
b=j;
for(k=j+1;k<n;k++) //进行之后数列的及交换
if(a[k]<a[b]) //若k<b,将值标记
b=k;
if(b!=j) //与不同的值一一对换
{
temp=a[b];
a[b]=a[j];
a[j]=temp;
}
}
judge(m);
return 0;
}
void judge(int m)
{
int c,sum=0,v=0;
if(m<a[0]) //边界条件,时间不够看完最短的av
printf("0\n");
else
{
while(m>sum)
{
sum+=a[v];
v++;
}
c=v;
if(m<sum)
printf("%d\n",c-1);
else if(m=sum) //边界条件,时间正好能够看完全部av
printf("%d\n",c);
}
}