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

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

Восстановить пароль Регистрация
 
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
19.11.2011, 00:24     Помощь. Динамика #1
Доброго времени суток. Помогите с задачей. Не получается полное решение. Буду благодарен
Мальчик Петя выложил линию из 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++
C++ Beep() - музыка из динамика
C++ Динамика
C++ Динамика,С++,предметная область Аптека
Динамика, динамика и снова динамика C++
Динамика C++
C++ Уменьшение числа(динамика)
динамика и статика (массивы) C++

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

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

Текущее время: 19:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru