简单的题目,在N个数中找到差值最小的并且相加等于所给的 M。
直接暴力枚举,数据量较小。
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int data[10010];
int n, money;
int main()
{
// freopen("1.txt", "r", stdin);
int i, j;
while(cin >> n)
{
for(i = 0; i < n; i++)
cin >> data[i];
cin >> money;
int maxp, minp, cha = 0xfffffff;
for(i = 0; i < n; i++)
for(j = i + 1; j < n; j++)
if(data[i] + data[j] == money)
{
if(cha > abs(data[i] - data[j]))
{
maxp = data[i] > data[j] ? data[i] : data[j];
minp = data[i] < data[j] ? data[i] : data[j];
cha = maxp - minp;
}
}
printf("Peter should buy books whose prices are %d and %d.\n\n", minp, maxp);
}
return 0;
}