c++实现钢管长度19下料问题(穷举法)

在这里插入图片描述

#include <iostream>
using namespace std;

void calculate(int len1,int len2,int len3,int n1,int n2,int n3)
{
	int length = 19;
	int a[3] = { 0,0,0 };
	for (int i = 0; i < n1; i++)
	{
		length -= len1;
		if (length < 0)
		{
			length += len1;
			break;
		}
		a[0]++;
	}

	for (int i = 0; i < n2; i++)
	{
		length -= len2;
		if (length < 0)
		{
			length += len2;
			break;
		}
		a[1]++;
	}
	for (int i = 0; i < n3; i++)
	{
		length -= len3;
		if (length < 0)
		{
			length += len3;
			break;
		}
		a[2]++;
	}
	cout << "=====================================" << endl;
	cout << "长度为 " << len1 << " 的钢管有 " << a[0] << " 根" << endl;
	cout << "长度为 " << len2 << " 的钢管有 " << a[1] << " 根" << endl;
	cout << "长度为 " << len3 << " 的钢管有 " << a[2] << " 根" << endl;
	cout << "剩余长度为" << length << endl;
}

int main()
{
	int length = 19;
	cout << "请输入三种长度" << endl;
	int len1 = 0;
	int len2 = 0;
	int len3 = 0;
	while (cin >> len1 >> len2 >> len3)
	{
		//输入的三种长度没有问题则跳出循环
		if (len1 <= 19 && len1 >= 0 &&
			len2 <= 19 && len2 >= 0 &&
			len3 <= 19 && len3 >= 0
			)
			break;
		cout << "输入的数据不合法请重新输入"<<endl;
	}
	cout << "请输入三种长度钢管的数量" << endl;
	int n1 = 0;
	int n2 = 0;
	int n3 = 0;
	cin >> n1 >> n2 >> n3;
	calculate(len1, len2, len3, n1, n2, n3);
	calculate(len1, len3, len2, n1, n3, n2);
	calculate(len2, len1, len3, n2, n1, n3);
	calculate(len2, len3, len1, n2, n3, n1);
	calculate(len3, len2, len1, n3, n2, n1);
	calculate(len3, len1, len2, n3, n1, n2);
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小鹏在划水

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

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

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

打赏作者

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

抵扣说明:

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

余额充值