算法题_魔塔问题

题目:
算法题_魔塔问题_第1张图片

接下来我们用C++进行编程:

#include
#include
#include
#include

using namespace std;

int Getinjure(int n, int k, vector<int> a, vector<int> b)
{
	int i = 0;
	int j;
	vector<int> sign(n, 0);
	int result = 0;
	int minindex, maxindex;
	while(i < n)
	{
		minindex = -1;
		maxindex = -1;
		for(j = 0; j < n; j++)
		{
			if(sign[j] == 0)
			{
				if(a[j] < k && minindex == -1)
					minindex = j;
				else if(a[j] < k && a[j] < a[minindex])
					minindex = j;
				if(a[j] >= k && maxindex == -1)
					maxindex = j;
				else if(a[j] >= k && a[j] > a[maxindex])
					maxindex = j;
			}
		}
		cout << minindex << ' ' << maxindex << endl;
		if(minindex != -1)
		{
			k++;
			sign[minindex] = 1;
		}
		else if(maxindex != -1)
		{
			result += b[maxindex];
			sign[maxindex] = 1;
			k++;
		}
		i++;
	}
	return result;
}

int main(){
	int n, k;
	cin >> n >> k;
	int i;
	vector<int> a(n, 0);
	vector<int> b(n, 0);
	for(i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	for(i= 0; i < n; i++)
	{
		cin >> b[i];
	}
	int result = Getinjure(n, k, a, b);
	cout << result << endl;
	return 0;
}

你可能感兴趣的:(算法题)