Heim > Backend-Entwicklung > C++ > Ordnen Sie ein Array mithilfe von C++ neu an, um i*arr zu maximieren

Ordnen Sie ein Array mithilfe von C++ neu an, um i*arr zu maximieren

WBOY
Freigeben: 2023-08-30 15:13:04
nach vorne
795 Leute haben es durchsucht

Ordnen Sie ein Array mithilfe von C++ neu an, um i*arr zu maximieren

在本文中,我们将讨论重新排列给定的 n 个数字的数组的问题。基本上,我们必须从数组中选择元素。为了选择每个元素,我们得到一些点,这些点将通过当前元素的值*当前元素之前选择的元素数来评估。您应该选择元素以获得最高分。例如 -

Input : arr[ ] = { 3, 1, 5, 6, 3 }

If we select the elements in the way it is given, our points will be
   = 3 * 0 + 1 * 1 + 5 * 2 + 6 * 3 + 3 * 4
   = 41
To maximize the points we have to select the elements in order { 1, 3, 3, 5, 6 }
   = 1 * 0 + 3 * 1 + 3 * 2 + 5 * 3 + 6 * 4
   = 48(maximum)

Output : 48

Input : arr[ ] = { 2, 4, 7, 1, 8 }
Output : 63
Nach dem Login kopieren

寻找解决方案的方法

看这个例子,我们得到了得到最大点,我们需要从小到大选择元素。找到解决方案的方法是,

  • 按升序对给定数组进行排序。
  • 开始从索引 0 到末尾选取元素。
  • 计算选择每个元素所获得的分数。

示例

#include <bits/stdc++.h>
#include <iostream>
using namespace std;

int main () {
   int arr[] = { 2, 4, 7, 1, 8 };
   int n = sizeof (arr) / sizeof (arr[0]);
   // sorting the array
   sort (arr, arr + n);

   int points = 0;
   // traverse the array and calculate the points
   for (int i = 0; i < n; i++) {
      points += arr[i] * i;
   }
   cout << "Maximum points: " << points;
   return 0;
}
Nach dem Login kopieren

输出

Maximum points: 63
Nach dem Login kopieren

上述代码说明

这段C++代码很容易理解。首先我们对数组进行排序,然后使用 for 循环遍历数组并计算从头到尾选择每个元素所获得的分数。

结论

在本文中,我们讨论选择数组中的元素以获得最大点的问题,其中点由 i * arr[i] 计算。我们采用贪心方法来解决这个问题并获得最大分数。还讨论 C++ 代码来做同样的事情,我们可以用任何其他语言(如 C、java、Python 等)编写此代码。希望本文对您有所帮助。

Das obige ist der detaillierte Inhalt vonOrdnen Sie ein Array mithilfe von C++ neu an, um i*arr zu maximieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage