AV小视频

题目描述

小明的表哥为他推荐了一些学习两性知识的小视频(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);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42766201/article/details/84859603