1 条题解

  • 0
    @ 2023-6-11 12:16:44

    C :

    #include<stdio.h>
    int m,n,a[110];
    int main()
    {
    	scanf("%d %d",&m,&n);
    	for(int i=1;i<=n;i++)
    	scanf("%d",&a[i]);
    	for(int i=1;i<n;i++)
    	for(int j=i+1;j<=n;j++)
    	if(a[i]>a[j])
    	{
    		int t=a[i];
    		a[i]=a[j];
    		a[j]=t;
    	}
    	for(int i=n;i>=1;i--)
    	{
    		if(m<=0)
    		{
    			printf("%d",n-i+1);
    			return 0;
    		}
    		m-=a[i];
    		if(m<=0)
    		{
    			printf("%d",n-i+1);
    			return 0;
    		}
    	}
    	printf("NO");
    	return 0;
    }
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
    	int i,n,m,j;
    	int t=0;
    	int a[100];
    	cin>>m;
    	cin>>n;
    	for(i=0;i<n;i++){
    		cin>>a[i];
    	}
    	for(i=0;i<n-1;i++){
    		for(j=0;j<n-i-1;j++){
    			if(a[j]<a[j+1]){
    				t=a[j];
    				a[j]=a[j+1];
    				a[j+1]=t;
    			}
    		}
    	}
    	int s=0;
    	for(i=0;i<n;i++){
    		s=s+a[i];
    		if(s>=m){
    			break;
    		}
    	}
    	if(i==n){
    		cout<<"NO"<<endl;
    	}else{
    		cout<<i+1<<endl;
    	}
    }
    

    Python :

    a = input().split()
    # b为每个师傅每天加工的零件数量
    b = input().split()
    # 总零件个数m
    m = int(a[0])
    # 加工师傅的数量n
    n = int(a[1])
    c = 0
    # 类型转换
    for i in range(0, n):
        b[i] = int(b[i])
    # 从大到小排序
    b.sort(reverse=True)
    #从大到小找数,如果相加大于等于总数量m,则表示找到
    for i in range(0, n):
        c += b[i]
        if c >= m:
            print(i + 1)
            break
    #如果找不到就输出NO
    if c < m:
        print('NO')
    
    
    • 1

    【入门】需要安排几位师傅加工零件?

    信息

    ID
    2246
    时间
    1000ms
    内存
    16MiB
    难度
    7
    标签
    递交数
    94
    已通过
    25
    上传者