Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kindlyman
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 6
#1

Циклический сдвиг. Необходимо так сдвинуть массив B, чтобы количество различающихся индексов было минимальным - C++

16.11.2014, 18:08. Просмотров 123. Ответов 0
Метки нет (Все метки)

Помогите пожалуйста исправить. Проходит 68 тестов из 100

Дано 2 массива. Необходимо так циклически сдвинуть второй массив, чтобы количество индексов i, в которых массивы отличаются (то есть ai ≠q bi), было как можно меньше.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <vector>
#include <cassert>
#include <algorithm>
 
using namespace std;
 
int main ()
{
    int n;
    cin >> n;
 
    vector<int> a(n);
    for (int i = 0; i < n; i++)
        cin >> a[i];
 
    vector<int> b(n);
    for (int i = 0; i < n; i++)
        cin >> b[i];
 
    vector<int> ch;
    int k = 0;
    if (n == 1)
    {
        if (b[0] == a[0])
            cout << 0 << endl;
        else 
            cout << 1 << endl;
    }
    else
    {
        for (int i = 0; i < n; i++)
        {
            if (i >= 1)
            {
            int temp = b[i - 1];
            b[i - 1] = b[i];
            b[n - 1] = temp;
            }
            else
            {
                int temp = b[n - 1 + i];
                b[n - 1 + i] = b[i];
                b[i] = temp;
            }
            
            for (int j = 0; j < n; j++)
                if (b[j] != a[j])
                    k++;
            ch.push_back(k);
            k = 0;
        }
        sort (ch.begin(), ch.end());
        cout << ch[0];
    }
    return 0;
}
пример

2 массива
8 4 2 5
2 2 5 5
выход
2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 18:08     Циклический сдвиг. Необходимо так сдвинуть массив B, чтобы количество различающихся индексов было минимальным
Посмотрите здесь:

Определить, в каком доме необходимо установить АТС, чтобы расстояние до всех телефонов было минимальным - C++
В поселке N домов, расположенных вдоль дороги с одной стороны на равных расстояниях. В деревне проводят телефонную связь.Указано , сколько...

Как происходит циклический сдвиг (как сдвинуть элементы в массиве) - C++
Задан массивы действительных чисел а1, а2,…,а20. Сдвинуть циклическим сдвигом все его элементы так, чтобы минимальный элемент стоял на...

Удалить из записи числа указанное количество цифр так, чтобы полученное число было максимальным - C++
Написать программу, которая для заданного натурального числа удаляет из записи числа указанное количество цифр так, чтобы полученное число...

Массив: Соединить точки замкнутой самонепересекающейся ломаной так, чтобы периметр полученного многоугольника был минимальным - C++
Здравствуйте!! Такая проблема, не могу придумать алгоритм для решения следующей задачи, прощу подскажите, у кого есть какие идеи: В...

Одномерный массив. Циклический сдвиг влево - C++
Дан массив A размера N и целое число K (1 ≤ K ≤ 4, K &lt; N). Осущест- вить циклический сдвиг элементов массива влево на K позиций (при этом...

Выполнить циклический сдвиг массива на заданное количество столбцов - C++
Дан двумерный массив размерностью N x M, заполненный случайными числами из диапазона от 0 до 100. Выполнить циклический сдвиг массива на...

Найти точку на плоскости, чтобы максимально расстояние от нее до заданных прямых было минимальным - C++
Всем привет, есть задача, которая в общем смысле формулируется так : у нас есть N прямых от 2 до 100, есть их уравнения в виде ax+by+c...

Квадратный массив N×N по диагонали влево вниз (циклический сдвиг) - C++
Эта программа выполняет циклический сдвиг по диагонали влево вверх, а надо по диагонали влево вниз. Код: #include&lt;iostream.h&gt; ...

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента. - C++
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.

Переделать код так, чтобы значения можно было задавать с клавиатуры - C++
Здраствуйте, помогите пожалуйста переделать код так, что-бы значения можно было задавать с клавиатуры, а не прописывать их в самом коде ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru