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

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

Войти
Регистрация
Восстановить пароль
 
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
#1

Помощь. Динамика - C++

19.11.2011, 00:24. Просмотров 370. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Помогите с задачей. Не получается полное решение. Буду благодарен
Мальчик Петя выложил линию из N кубиков разных цветов и размеров. Девочка Лена убирает по одному кубику, но убирать кубик она может только в том случае, если соседние кубики у него одного цвета и/или размера. Какое наибольшее количество кубиков сможет убрать Лена?

Входные данные
В первой строке записано целое число N (1 <= N <= 100). Далее идет N строк по два целых числа Ci и Ri - цвет и размер i-го кубика соответственно (1 <= Ci, Ri <= 100).

Выходные данные
В первую строку выведите целое неотрицательное Q - наибольшее количество кубиков, которое может убрать Лена. Во вторую строку выведите Q чисел - номера кубиков в порядке их удаления из линии. Номера кубиков определяются порядком их задания во входных данных. Заметим, что Q <= N - 2, так как кубики, находящиеся с краю, убирать нельзя. Если решений несколько, выведите любое.

Пример

Ввод
5
2 1
1 2
1 2
2 1
1 1



Вывод

3
4 3 2

Вот код, не проходит 11 тестов, что делать - не знаю. помогите знающие люди

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using namespace std;
 
const int MAXN = 100;
 
int arr[MAXN][2];
int res[MAXN];
bool arr1[MAXN];
 
int main() {
#ifndef ONLINE_JUDGE
    freopen ("input.txt", "r", stdin);
    freopen ("output.txt", "w", stdout);
#endif
    int N, result = 0, st, sr;
    bool fl;
 
    cin >> N;
    for (int i = 0; i < N; i++) {
        cin >> arr[i][1] >> arr[i][0];
        arr1[i] = true;
 
    } do {
        fl = false;
        st = -1; sr = -1;
        for (int i = 0; i < N; i++)
            if (arr1[i]) {
                if (st == -1) {
                    st = i;
                } else {
                    if (sr == -1)
                        sr = i;
                    else {
                        if (arr[st][0] == arr[i][0] || arr[st][1] == arr[i][1]) {
                            bool fl1 = true;
 
                            for (int j = i + 1; j < N; j++)
                                if(arr1[j]) {
 
                                    if (arr[j][0] == arr[sr][0] || arr[j][1] == arr[sr][1]) {
                                        fl1 = false;
                                    }
                                    break;
 
                                } if (fl1) {                                
                                    res[result++] = sr;                                                    
                                    arr1[sr] = false;                                                               
                                    fl = true;
                                    break;
                                } else {
                                    st = sr;
                                    sr = i;
                                }
                        } else {
                            st = sr;
                            sr = i;
                        }
                    }
                }
            }
            if (!fl)
                break;
    } while (true);
 
    cout << result << endl;
 
    for (int i = 0; i < result; i++)
        cout << res[i] + 1 << " ";
    
    return 0;   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 00:24     Помощь. Динамика
Посмотрите здесь:

Динамика, динамика и снова динамика - C++
Вот как сделать например, что бы динамический массив например int **pArray = new int*; for(int i = 0; i &lt; rows; i++) pArray =...

Динамика - C++
При вводе студента появляется одновременно фамилия и число. Как сделать так чтобы поэтапно появлялось ? #include &lt;iostream&gt; ...

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

О сигналах динамика ПК - C++
Есть ли другой вариант подачи определенного кол-ва звуковых сигналов динамиком компьютера? count=5; for (count; count !=0; count--) ...

Уменьшение числа(динамика) - C++
Здравствуйте, помогите найти ошибку в коде для задачи - имеется натуральное число(1&lt;=n&lt;=10^6), к нему применимы операции -1 /2 и /3, при...

Динамика в двумерном массиве - C++
Всем привет. Подскажите, пожалуйста, реально ли реализовать такое. Есть заранее найденное n - не константа. Нужно, чтобы массив...

Динамика и статика (массивы) - C++
1)Почему при статическом выделении памяти массив обязательно объявлять в функции main? 2)Почему его нельзя вернуть через return из...

Beep() - музыка из динамика - C++
Сидел на форуме и на толкнулся на функцию Beep(). Есть ли у кого нибудь исходники с музыкой из встроенных динамиков в ПК??=) Вот пример...

Динамика,С++,предметная область Аптека - C++
Сказали сделать задачу на С++,дали только предметную область Аптека,которая состоит из:класс поставщик,класс база,класс сотрудники,класс...

Динамика. Не могу к подзадаче свести и всё тут( - C++
Рассмотрим прямолинейное поле длины N, в первой клетке которого стоит игровая фишка. За один ход мы можем переместить ее на не более чем K...

Динамика. Определить номера строк матрицы в которых знаки элементов чередуются. - C++
Доброго времени суток Господа программисты. Очень прошу Вашей помощи с решением следующей задачи:Определить номера строк матрицы, в которых...

Помощь С++ - C++
Помогите доразбираться в коде, не могу понять, что нужно дальше сделать :( Вот сам код - #include&lt;iostream&gt; #include&lt;math.h&gt; ...


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

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

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