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

Задача «NetWork» - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Наследование (одномерный массив) http://www.cyberforum.ru/cpp-beginners/thread370615.html
Доброе время суток. Начал изучать наследование и столкнулся с проблемой: массив из базового класса виден классу-потомку, но значение элементов не передаются. #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string> #include <iostream> #include "CLASS.h" using namespace std;
C++ Формирование списка из текстового файла Люди объясните пожалуйста словесно выполнение функции ввода списка из текстового файла, желатено построчно очень важно понять, ну и по комментарием посмотрите правильно написал там вопросы поставил... Заранее спасибо # include <iostream> // класс для работы с вводом-выводом # include <windows.h> // для функции CharToOem(); # include <fstream> // класс для работы с... http://www.cyberforum.ru/cpp-beginners/thread370614.html
C++ Тип currency в borlan visual c++ enterprize 6.0
Ругается на декларацию currency RoundToKop (currency summ);. Как исправить?
Найти сумму максимального значения элементов с четными индексами и минимального значения элементов с нечетными индексами в одномерном массиве C++
дан одномерный массив А.найти мах(a2,a4..)+мин(a1,a3) int main() { int y; cin>>N; for(int i=0; i<N; i++) cin>>y; max=y; min=y; for( i=0; i<N; i++) {if (i%2==0 &&y<min )
C++ Символы и строки. Кодировка символов http://www.cyberforum.ru/cpp-beginners/thread370593.html
Написать функции, которые шифруют-дешифруют текст помещенный в файле, имя которого задается в качестве параметра, заменяя буквы цифрами в соответствии с содержащейся в файле таблицы кодировки (значения кодов произвольные) вида: А...........010..........а...........503 Б...........100..........б...........215 В...........103..........в...........313 В главной программе обеспечить ввод...
C++ На каком поле DBGrid находится фокус? Как определить, на каком поле DBGrid находится фокус? подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.10.2011, 19:56     Задача «NetWork»
Цитата Сообщение от Includenv Посмотреть сообщение
Интересует именно идея. Код писать не надо.
идея в коде:
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
#include <stdio.h>
 
int main ()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    int *mas, i, n, mas2[18], j, tmp, y;
    mas=new int[262144];
    char mas1[18][19];
    scanf("%d\n", &n);
    for(i=0; i<n; i++)
        scanf("%s\n", &mas1[i]);
    for(i=0; i<262144; i++)
        mas[i]=0;
    mas2[0]=1;
    for(i=1; i<n; i++)
        mas2[i]=mas2[i-1]*2;
    for(i=0; i<n; i++)
    {
        for(j=0; j<262144; j++)
            if(mas[j]!=0)
            {
                bool fl=true;
                tmp=j+1;
                for(y=n-1; y>i; y--)
                    if(tmp>=mas2[y])
                        tmp-=mas2[y];
                if(tmp>=mas2[i])
                    fl=false;
                if(fl)
                {           
                    tmp=j+1;
                    for(y=n-1; y>=0; y--)
                        if(tmp>=mas2[y])
                            tmp-=mas2[y];
                        else
                        {
                            if(mas1[i][y]=='Y')
                                mas[j+mas2[y]+mas2[i]]=mas[j]+1;
                        }
                }
            }
        for(j=0; j<n; j++)
            if(mas1[i][j]=='Y')
                mas[mas2[j]+mas2[i]-1]=1;
    }
    int max=0;
    for(i=0; i<262144; i++)
        if(mas[i]>max)
            max=mas[i];
    printf("%d", max*2);
    return 0;
}
эта задача на динамику. вся проблемма в том как оформить варианты (их здесь 262143) задействованных уже комьютеров.
когда-то мне попался такой алгоритм (подходящий для этой задачи):
1 2 3 4 5 6 .... 18 <- номера комьютеров
1 2 4 8 16 32 .... 131072 <- степени 2-ки (начиная со степени 0)
теперь можно одним числом "зашифровать", какие компьютеры уже задействованы.
Например число 13:
№№ компьютеров - 4 (степень двойки равна 8), 3 (степень двойки равна 4), 1 (степень двойки равна 1). Здесь сумма степеней двоек равна 13 и никакого другого варианта для числа 13 Вы не сможете подобрать.
В общем такое "шифрование" и есть основа кода. Что еще не понятно, спрашивайте.
 
Текущее время: 12:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru