Написано для: Л Гу P1116
Название Описание
Рядом со старой железнодорожной станции есть мост, палуба может вращаться вокруг центра уровня речных причалов. А рабочие станции обнаружили , длина моста может вместить до двух машин, если вращение моста \ (\ 180) градусов, два смежных отсеков могут обмениваться позиции, этот метод может изменить порядок отсека. Он несет ответственность за использование моста остановится каюта по номеру кабины в порядке возрастания. После того, как он ушел, железнодорожный вокзал решил автоматизировать эту работу, одна важная задача состоит в том, чтобы составить программу, введите порядок начальной каретки , чтобы вычислить минимальное число шагов будет иметь возможность сортировать по перевозке.
Формат ввода
В общей сложности из двух линий.
Первая строка представляет собой общее количество салона \ (N (≤ 10000) \) .
Вторая строка является \ (N \) различное число указывает на начальный порядок кабины.
Формат вывода
Целое число, минимальное число оборотов.
ввод пробы
4
4 3 2 1
Пример вывода
6
анализ
Этот вопрос на самом деле пузырь рода вопросы моделирования, использование мысли пузырьковой сортировки, найти друг смежной пару слева больше , чем справа, меняла их, а также совпадение.
Или обратиться к нам непосредственно повернуть его вспять - то есть: Найти число массива в обратном порядке числа реверса наш ответа.
Пузырь сортировка кода следующим образом :
#include <bits/stdc++.h>
using namespace std;
const int maxn = 10010;
int n, a[maxn], cnt;
int main() {
cin >> n;
for (int i = 0; i < n; i ++) cin >> a[i];
for (int i = 1; i < n; i ++) {
for (int j = 0; j < n-i; j ++) {
if (a[j] > a[j+1]) {
cnt ++;
swap(a[j], a[j+1]);
}
}
}
cout << cnt << endl;
return 0;
}
Реверс коды для достижения следующего метода:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 10010;
int n, a[maxn], cnt;
int main() {
cin >> n;
for (int i = 0; i < n; i ++) cin >> a[i];
for (int i = 0; i < n; i ++)
for (int j = i+1; j < n; j ++)
if (a[i] > a[j])
cnt ++;
cout << cnt << endl;
return 0;
}