(蒟蒻的提问#1)
查看原帖
(蒟蒻的提问#1)
220864
蒟蒻_菜菜楼主2020/12/5 23:43
#include <bits/stdc++.h>
using namespace std;
int a[21], n[5], b[5], lar, sm, c;
void cai(int n, int left)
{
	if (n == 0)
	{	
		int right = lar - left;
		if (right > left ) 
		{
			if (right - left < sm)
			{
				sm = right - left;
				c = right;
			}
		}
		else 
		{
			if (left - right < sm)
			{
				sm = left - right;
				c = left;
			}
		}
		return;
	}
	cai (n - 1, left);
	left += a[n];
	cai (n - 1, left);
}
int main()
{
	int i;
	cin >> n[1] >> n[2] >> n[3] >> n[4];
	
	lar = 0;
	for (i = 1; i <= n[1]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[1], 0);
	b[1] = c;
	
	lar = 0;
	for (i = 1; i <= n[2]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[2], 0);
	b[2] = c;
	
	lar = 0;
	for (i = 1; i <= n[3]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[3], 0);
	b[3] = c;
	
	lar = 0;
	for (i = 1; i <= n[4]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[4], 0);
	b[4] = c;
	
	cout << b[1] + b[2] + b[3] + b[4] << endl;
	return 0;
}

这是我的一次提交的代码(90分)

函数作用是搜索所需最少的时间

实现方法是将任务尽可能平均分配给左右两脑

取左右两脑中做大的时间作为完成这门学科所需的时间

#include <bits/stdc++.h>
using namespace std;
int a[21], n[5], b[5], lar, sm, c;
void cai(int n, int left)
{
	if (n == 0)
	{	
		int right = lar - left;
		if (right > left ) 
		{
			if (right - left <= sm)
			{
				sm = right - left;
				c = right;
			}
		}
		else 
		{
			if (left - right <= sm)
			{
				sm = left - right;
				c = left;
			}
		}
		return;
	}
	cai (n - 1, left);
	left += a[n];
	cai (n - 1, left);
}
int main()
{
	int i;
	cin >> n[1] >> n[2] >> n[3] >> n[4];
	
	lar = 0;
	for (i = 1; i <= n[1]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[1], 0);
	b[1] = c;
	
	lar = 0;
	for (i = 1; i <= n[2]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[2], 0);
	b[2] = c;
	
	lar = 0;
	for (i = 1; i <= n[3]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[3], 0);
	b[3] = c;
	
	lar = 0;
	for (i = 1; i <= n[4]; ++i)
	{
		cin >> a[i];
		lar += a[i];
	}
	sm = lar;
	cai(n[4], 0);
	b[4] = c;
	
	cout << b[1] + b[2] + b[3] + b[4] << endl;
	return 0;
}

这是我第二次的代码(100分)

相比之前只多了个等于号

但是为什么加个等于号就过了?

求大佬解答

方便的话麻烦给个样例

2020/12/5 23:43
加载中...