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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разместить в динамической памяти прямоугольную матрицу http://www.cyberforum.ru/cpp-beginners/thread386896.html
Здравствуйте! Очень нужно решение задачи. Ибо с С++ не дружу. Заранее спасибо! Условие: Разместить в динамической памяти прямоугольную матрицу. Вывести адреса четных положительных элементов, если такие есть, или соответствующее сообщение.
C++ Программа которая выводит пример на умножение двух однозначных чисел Доброй ночи форумчане! Помогите пожалуйста с задачкой. Условие: Написать программу которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение "Правильно!" или "Вы ошиблись", и правильный результат. Ниже приведен рекомендуемый вид экрана во время выполнения программы.... http://www.cyberforum.ru/cpp-beginners/thread386894.html
C++ Создание потока в чужом процессе
Всем привет. Возник вопрос... Есть код: //--------------------------------------------------------------------------- #include <vcl.h> #include <windows.h> #pragma hdrstop #include "Unit1.h"
интервал между датами C++
Подскажите как написать программу для нахождения интервала в днях между двумя заданными датами. Пробовала брать нулевой год, и просчитывать количество дней до первой и второй даты, потом вычитать из большого меньшее. Но преподавать сказал, что это не эффективно.
C++ Умножение больших чисел http://www.cyberforum.ru/cpp-beginners/thread386881.html
Здравствуйте, я сегодня услышал, что есть какой-то метод умножения и вычитания огромных чисел через вектора, но так его и не нагуглил, помогите кто может.
C++ Шифрование Зашифровать исходное сообщение открытым ключом и разшифровать закрытым ключом. Сообщение формируется следующим образом: for(i=0;i<26;i++) //перевод в двоичный вид { for(j=0;j<6;j++) { a=s%2; s=s/2; подробнее

Показать сообщение отдельно
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79

Помощь. Динамика - 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;   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru