
Учитель задал домашку тупую помогите решить на c++есть массив чисел длиной n: a_1, a_2, a_3, a_4,
.... , a_nмы хотим отсортировать массив в порядке не убыванияпо следующему принципу: мы выбираем два соседних числа и меняем местамиа за это платим удвоенную разность чисел которые меняем местаминужно вывести цену которую мы в итоге получимВвод31 2 3 Вывод8В примере сначала числа 1 и 2 поменяются местами (потребуется 2 монеты ),затем числа 1 и 3 (разница равна 2, суммарно плюс 4 монеты), и последним будет замена2 и 3 (ещё 2 монеты).

Ответы на вопрос

#include <iostream>
using namespace std;
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
signed main() {
int ans = 0;
int n;
cin >> n;
int arr[n];
for(int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < n-1; i++){
for (int j = 0; j < n-i-1; j++){
if (arr[j] < arr[j+1]){
swap(&arr[j], &arr[j+1]);
ans += (arr[j] - arr[j+1])*2;
}
}
}
cout << ans;
}
P.S: задачка не тупая, хороший вариант для понимания bubble sort'а



Для решения данной задачи вам потребуется реализовать алгоритм сортировки пузырьком, который при этом будет учитывать стоимость обмена элементов. Вот пример кода на C++, который решает данную задачу:
cpp#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
int totalCost = 0;
bool swapped;
do {
swapped = false;
for (int i = 0; i < n - 1; ++i) {
if (a[i] > a[i + 1]) {
totalCost += 2 * (a[i] - a[i + 1]);
swap(a[i], a[i + 1]);
swapped = true;
}
}
} while (swapped);
cout << totalCost << endl;
return 0;
}
Вы можете скопировать этот код, вставить его в свою среду разработки на C++ и выполнить. Программа сначала считывает размер массива и его элементы, затем применяет алгоритм сортировки пузырьком с учетом стоимости обмена элементов. В конце выводится общая стоимость.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili