9.1 Упражнения Отсек решение перестройки к задаче

Написано для: Л Гу 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;
}

рекомендация

отwww.cnblogs.com/zifeiynoip/p/11482980.html
9.1
9.1
9.1