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

Эйлеров путь - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рекурсия в цикле http://www.cyberforum.ru/cpp-beginners/thread1036565.html
Помогите пожалуйста, срочно нужно с этим разобраться. Как она работает? Правильно составлена последовательность вызовов?
C++ Что такое паралельные потоки? Что такое паралельные потоки? http://www.cyberforum.ru/cpp-beginners/thread1036549.html
Извлечение из списка всех нулевых елементов C++
С++ Не могу никак разобраться что делаю не так. Суть заключаеться - ввожу любые елементы например 5, 10, 0 ,3, 4, 0, 8 или любые а в результате списка должен получиться числа без нулей тоесть 5, 10, 3, 4, 8. Я уже запутался что к чему, прошу вашей помощи.#pragma agrused #include <iostream.h> #include <stdlib.h> #include <conio.h> // shablon vuzliv spusky typedef struct node {node *next;...
Матрицы. Расположить элементы строк в порядке возрастания C++
помогите пожалуйста нужно вывести исходную матрицу с файла на экран, расположить элементы строк в порядке возрастания и тоже вывести на экран -2 1 3 -1 4 8 0 5 -8 7 6 -3 5 3 14 0 4 1 -15 12 0 -9 -8 4
C++ Написать функцию для приближенного вычисления log http://www.cyberforum.ru/cpp-beginners/thread1036536.html
Написать функцию для приближенного вычисления log2x с помощью многочлена наилучшего приближения: {log}_{2}x \approx \sum_{k=1}^{3} {a}_{2k-1} {(\frac{x-1}{x+1})}^{2k-1} , где: 1<=x<=2^0.5 a1 = 2.8854; a3 = 0.9615; a5 = 0.959
C++ Написать программу вывода на экран значений функции помогите,пожалуйста подробнее

Показать сообщение отдельно
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
11.12.2013, 11:05  [ТС]     Эйлеров путь
Сейчас я дописал поиск нечетной вершины.
На входе у меня 260-280Кб строк
такого типа(на самом деле они по-моему по 25 или 30 символов но это не важно)
ATGCG
GCATG
CATGC
AGGCA
GGCAT
Ответ типа такой(отсортирован по алфавиту)
AGGCA -> GGCAT
CATGC -> ATGCG
GCATG -> CATGC
GGCAT -> GCATG
Все одинаковой длины.
Нечетное ребро - это когда первые (размер() -1) символов не повторяются нигде. Четное - когда у одной строки это начало,а у другой конец.
Вот код
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// OGP2.0.cpp : Defines the entry point for the console application.
//
 
// Overlap Graph Problem.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "conio.h"
#include <string>
#include <iostream>
#include <fstream>
#include <list>
#include <algorithm>
#include <iterator>
#include "vector"
 
using namespace std;
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    list<string> Lines;
    list<string>::iterator it;
    vector <string> lines;
    string s1, s2, example;
    ifstream Fin;
    Fin.open("d:\\dataset_52_7.txt");
    if (!Fin.is_open())
    {
        cout << "Can't open file-d:\\dataset_52_7.txt" << endl;
        exit(EXIT_FAILURE);
    }
    while (Fin.good())
    {
      getline(Fin, s1);
      Lines.push_back(s1);
      s1.clear();
    }
    if (Fin.eof())
        cout << "EOF" << endl;
    else 
        if (Fin.fail())
        cout << "Fuck a duck, HAX!!!" << endl;
    else
        cout << "!!!---!!!" << endl;
    Fin.close();
    //End of input
 
    
    //Lines.sort();
    for ( it = Lines.begin(); it != Lines.end(); it++)
        lines.push_back(*it);
    //sort & send dna to the vector
 
    int count = 0;
    for (int i = 0; i < lines.size(); i++)
    {
        s1 = lines.at(i);
        s1.erase(s1.begin() + s1.size() - 1);
        for (count = 0; count < lines.size(); count++)
        {
            example = lines.at(count);
            example.erase(example.begin());
            if (i != count)
            {
                if (s1 == example)
                    break;
            }
        }
        if (count == lines.size())
        {
            s1 = lines.at(i);
            break;
        }
    }
    //cout << s1;
    ofstream f_out("d:\\Result.txt", ios::app);
        if (!f_out) 
            {
                cout<<"Файл Result.txt невозможно открыть";
                exit(EXIT_FAILURE);
            }
        f_out << s1;
    while (lines.size() != 0)
    {
        example = s1;
        example.erase(example.begin());
        for (unsigned int i = 1; i < lines.size(); i++)
        {
            for (unsigned int j = 0; j < (s1.size() - 1); j++)
            {
                if (example.at(j) == lines.at(i).at(j))
                {
                    count++;
                }
            }
            if (count == example.size())
            {
                //f_out << s1 << " -> " << lines.at(i) << endl;
                //cout << s1 << " -> " << lines.at(i) << endl;
                s1.clear();
                s1 = lines.at(i);
                lines.erase(lines.begin() + i);
                break;
            }
            count = 0;
        }
        cout << lines.size();
        example.clear();
    }
    f_out.close();
    _getch();
    return 0;
}
Доходит до 4500 и потом не находит продолжения.
В чем может быть проблема?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru