C++计蒜客求充气求帮个忙
问题描述:
尽量用C++写, 不要太复杂,能够让我这个xin shou理解,如果能够bang mang, fei chang gan xie!
答
#include<iostream>
using namespace::std;
int main()
{
int n, m, r;
cout << "请分别输入气球数n,魔法剂数m以及气球最多承受气体质量r:" << endl;
scanf_s("%d %d %d", &n, &m, &r, 4, 4, 4);
int* marry = new int[m];
int* narry = new int[n];
bool* mbool = new bool[m];
for (int i = 0; i < m; ++i)
mbool[i] = true;
cout << "请分别输入每个魔法剂生成的气体质量:" << endl;
for (int i = 0; i < m; ++i)
{
scanf_s("%d", &marry[i], 4);
}
cout << "请分别输入每个气球的初始气体含量:" << endl;
for (int i = 0; i < n; ++i)
{
scanf_s("%d", &narry[i], 4);
}
int result = -1;
int k = -1;//记录最后一个j值
for (int i = 0; i < n; ++i)
{
int need = r - narry[i];
result = -1;
k = -1;
for (int j = 0; j < m; ++j)
{
if (marry[j] == need)
{
result = marry[j];
k = j;
break;
}
if (marry[j] < need && marry[j] > result && mbool[j])
{
result = marry[j];
k = j;
}
}
if (k != -1)
mbool[k] = false;
cout << result << endl;
}
return 0;
}
用的是暴力的方法,一个一个匹配,如果将m,n两个数组排序的话,应该会更方便些!