【C++】1326 - 需要安排几位师傅加工零件

文章讲述了如何在一个工厂中,通过冒泡排序确定最少需要多少个师傅在一天内完成m个零件的加工任务,确保即使所有师傅参与也不够用。算法涉及输入每个师傅的日加工量,进行排序并逐个减去,直到剩余零件无法再由任何师傅完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

某工厂有 n 个零件加工的师傅,每位师傅每天能够加工出不同数量的零件。
现有 m 个零件要求一天加工完,请问该工厂最少需要派几个师傅来完成这次零件加工任务,如果安排所有的师傅都参与加工也不能在一天内完成任务,请输出NO。
在这里插入图片描述

1.分析问题

  1. 已知:总零件个数m,加工师傅的数量n,每个师傅每天能够加工出来的零件数量a[100]
  2. 未知:1天时间内加工所有零件需要的师傅数量x
  3. 关系:排序做减法

2.定义变量

	//二、数据定义 
	int m,n,a[100],x=0; 

3.输入数据

	//三、数据输入
	cin>>m>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	} 

4.数据计算

最少需要派几个师傅来完成这次零件加工任务,所以应该优先减去加工数量多的师傅,即数组从大到小排列。
冒泡排序。

//四、数据计算 
	for(int i=0;i<n-1;i++){
		for(int j=0;j<n-1-i;j++){
			if(a[j]<a[j+1]){
				int temp;
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
	for(int i=0;i<n;i++){
		if(m>=a[i]){
			m-=a[i];
			++x;	
		}
		
	}

5.输出结果

#include<iostream>
using namespace std;
int main(){
	//一、分析问题
	//已知:总零件个数m,加工师傅的数量n,每个师傅每天能够加工出来的零件数量a[100]
	//未知:1天时间内加工所有零件需要的师傅数量x
	//关系:排序做减法 

	
	//二、数据定义 
	int m,n,a[100],x=0; 

	//三、数据输入
	cin>>m>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	} 
	//四、数据计算 
	for(int i=0;i<n-1;i++){
		for(int j=0;j<n-1-i;j++){
			if(a[j]<a[j+1]){
				int temp;
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=temp;
			}
		}
	}
	for(int i=0;i<n;i++){
		if(m>=a[i]){
			m-=a[i];
			++x;	
		}
		
	}

	//五、输出结果 
	if(0==m){
		cout<<x;
	}else{
		cout<<"NO";
	}
	return 0;	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月别枝惊鹊丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值