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

Vector . push_back - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать производный класс Real http://www.cyberforum.ru/cpp-beginners/thread800112.html
Реализовать класс-оболочку Number для числового типа float. Реализовать методы сложения и деления. Создать производный класс Real, в котором реализовать метод возведения в произвольную степень, и метод для вычисления логарифма числа.
C++ Задача Поворот на МЕГУ Светофор, установленный на повороте в торговый центр «МЕГА» с Новомосковского тракта, работает в таком режиме, что за одну минуту повернуть успевают k машин. По выходным, когда жители города едут закупаться продуктами и одеждой, перед этим поворотом вырастает огромная пробка. Администрация торгового центра дала указание повесить под строящимся неподалёку мостом камеру, подсчитывающую количество... http://www.cyberforum.ru/cpp-beginners/thread800107.html
C++ Однонаправленные списки
Подпрограмма №1 - формировка элементов первого списка тип float количество 8, включение элементов после второго. Подпрограмма №2 - формировка однонаправленного списка с положительных элементов первого списка, включение в начало списка. Не могу до конца разобраться с этим заданием и со списками вообще. Помогите пожалуйста дописать код до нормального вида 1.h struct Item { int info;...
Объяснить строку C++
Что значит такая конструкция, например: k->next->prev=tmp
C++ Ввести натуральное число n http://www.cyberforum.ru/cpp-beginners/thread800037.html
Ввести натуральное число n. Можно ли представить его в виде суммы двух квадратов натуральных чисел? Если можно, то указать все пары x и y таких натуральных чисел, что n=(x^2)+(y^2), x>=y
C++ Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив. Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста код, чтобы первый столбец записывался в 1й массив, второй столбец во 2й массив, а 3й столбец в 3й массив. подробнее

Показать сообщение отдельно
Минор
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 22
04.03.2013, 13:33  [ТС]     Vector . push_back
В общем на вход мне подается массив, имеющий n столбцов и k строчек.
При этом в каждой строчке содержится перестановка из первых натуральных n чисел.
Задача , создать перестановку такую, чтобы она не имела общих узлов с предыдущими элементами.
Поэтому я читаю массив. Для каждой n позиции отсеиваю те элементы , которые уже встречались ранее, и записываю оставшиеся в граф , i из n позиция которого показывает , какими числами я могу воспользоваться , чтобы поставить на это место

Добавлено через 1 минуту
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
По поводу fact - уже не знаю как тебе показать что элементы матрицы по значениям могут привосходить размер массива флагов х, потому тут по любому надо что то менять.
вот так вроде эта проблема уходит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (j=0;j<n;j++)
    {
       for (i=0;i<n;i++)
            x[i]=true;
       for (i=0;i<k;i++)
       {
            fact=a[i][j];
            if (x[fact-1])
                x[fact-1]=false;
       }
       for (i=0;i<n;i++)
       {
           if (x[i])
               temp.push_back(i + 1);
       }
       g.push_back(temp);       //вот где то тут программа зацикливается не могу понять почему .
       temp.clear();            //смысл в том чтобы в матрице g в j  строчку положить то что набирается массивом temp
   }                                        // после этого массив temp очистить
строка 9 10

Добавлено через 14 минут
-=ЮрА=-, вот код еще раз .
Оно вроде работает как бы правильно . но если на input
5 2
2 4 3 5 1
5 3 4 2 1
должно выдавать
1 3 4
1 2 5
1 2 5
1 3 4
2 3 4 5 , то оно еще вдобавок выдает кучу трэша
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <vector>
#include <iostream>
#include <cstdio>
 
using namespace std;
vector < vector <int> > g;
vector <int> temp;
vector<int> mt;
vector<char> used;
int n,u;
 
 
bool try_kuhn (int v)
{
    if (used[v])  return false;
    used[v] = true;
    for (size_t i=0; i<g[v].size(); ++i) {
        int to = g[v][i];
        if (mt[to] == -1 || try_kuhn (mt[to])) {
            mt[to] = v;
            return true;
        }
    }
    return false;
}
 
 
 
 
 
int main()
{
    int i,j,k,fact;
    cin>>n>>k;
    u=n;
    bool *x = new bool [n];
    int **a = new int *[k];
    for (i=0;i<k;i++)
    {
        a[i] = new int[n];
        for (j=0;j<n;j++)
            cin>>a[i][j];
 
    }
 
    for (j=0;j<n;j++)
    {
       for (i=0;i<n;i++)
            x[i]=true;
       for (i=0;i<k;i++)
       {
            fact=a[i][j];
            if (x[fact-1])
                x[fact-1]=false;
       }
       for (i=0;i<n;i++)
       {
           if (x[i])
               temp.push_back(i + 1);
       }
       g.push_back(temp);       //вот где то тут программа зацикливается не могу понять почему .
       temp.clear();            //смысл в том чтобы в матрице g в j  строчку положить то что набирается массивом temp
   }                                        // после этого массив temp очистить
 
    cout<<endl;
    for (int i = 0; i < n; ++i) {
    for (int j = 0; j < g[i].size(); ++j)
        cout << g[i][j] << " ";
    cout << endl;
   }
   cout<<endl;
 
 
    mt.assign (u, -1);
    for (int v=0; v<n; ++v) {
        used.assign (n, false);
        try_kuhn (v);
    }
 
    /*for (int i=0; i<u; ++i)
        if (mt[i] != -1)
            printf ("%d %d\n", mt[i]+1, i+1);*/
 
 
    return 0 ;
}
а все эту проблему поправил.

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