以最小绝对差找到第二个数组

时间:2020-10-27 15:46:38

标签: c++ arrays sorting

给定一个带有正整数的数组(可以包含重复的元素),我想找到一个带有正元素的第二个数组(但没有重复的元素),使得两个数组的相邻元素之间的绝对差最小,即{{1的总和}}是最小的。 给定数组中的其他元素是<=数组的大小。

到目前为止,我已经尝试过贪婪的方法,但是失败了。这是我的尝试。

abs(a[i]-b[i])

这里for(long long i=0 ; i<n ; ++i){ cin >> given_array[i]; } sort(given_array.begin(),given_array.end()); for(long long i=0 ; i<n ; ++i) { for(long long j=0 ; ; j++) { // visited array keeps track if I have already used a element in answer array if(given_array[i]-j>0 && !visited[given_array[i]-j]) { visited[given_array[i]-j] = 1; answer.pb(v[i]-j); min_value += j; break; } if(!visited[given_array[i]+j]) { visited[given_array[i]+j] = 1; answer.pb(v[i]+j); min_value += j; break; } } } 是我的结果数组,answer是最小绝对差。 我该如何处理?

0 个答案:

没有答案