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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Temoffey
20 / 40 / 0
Регистрация: 21.11.2010
Сообщений: 96
#1

Эйлеров цикл - C++

11.11.2011, 22:56. Просмотров 1377. Ответов 1
Метки нет (Все метки)

Есть программа:
Код
def euler_circuit(G):
    EP=[]  # Эйлеров цикл - массив вершин.
 
    #возвращает локальный замкнутый цикл    
    def euler(v):
        cycle={}
        while (G.degree(v)>0):  #пока не оказались в "безвыходной" вершине
            w=G.neighbors(v)[0] # берем $w$ --- первого попавшегося "соседа" $v$ 
            cycle[v]=w          # записываем ребро $(v,w)$ в $cycle$ и стираем его из графа
            G.delete_edge(v,w)
            v=w                 # повторяем все с вершиной $w$
        return cycle    
 
    # добавляет цикл к эйлерову пути
    def add_cycle():        
        print EP,"+",
        if len(EP)>0: # ищем вершину, к которой можно добавить цикл
            for i in range(0,len(EP)):
                if G.degree(EP[i])>0:
                    v=EP[i]
                    break
        else: # Подготавливаем пока пустой EP к присоединению цикла 
            v=G.nodes()[0] # выбираем первую попавшуюся вершину
            EP.append(v)   # и добавляем ее в EP
            i=0    
        c=euler(v)
        print c,"-->",    
        while c: # пока не перенесли все содержимое цикла   
            i=i+1; EP.insert(i,c[v]) #вставляем очередную вершину в EP        
            w=c[v] #переходим к следующей
            del c[v] #удаляя из цикла вставленную.
            v=w
        print EP
 
 
    #Проверка, необходимых и достаточных условий существования
    for v in G.nodes(): 
        if (G.degree(v) % 2)<>0: print "No Euler path!"; return
 
    while (G.number_of_edges()>0):
        add_cycle()          # добавляем цикл к эйлерову пути
 
    print EP
    return EP
Поясните плз в каком она компиляторе сделается и если можно переведите её в Си если не сложно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 22:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Эйлеров цикл (C++):

Эйлеров путь - C++
Я примерно написал програму, но мой вариант работает долго - 28(иногда меньше, иногда больше) минут.Подскажите пожалуйста есть ли какой-то...

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Цикл: цикл for вообще никак не воспринимается транслятором - C++
Пишу программу, которая производит различные действия с одномерным массивом. Возникла следующая проблема: цикл for вообще никак не...

Задание на цикл с параметром и цикл с постусловием - C++
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу значений функции Z= (e^-x)sinx для 0&lt;=x&lt;=П,...

Цикл for/Цикл while Помогите срочно пожалуйста... - C++
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. где a, b и c - действительные числа. 2.Цикл...

Цикл с параметром и цикл с условием - C++
1. Составить программу вычисления суммы первых 10 непарных чисел 2. Дано числовой ряд и некоторое число &quot;епсила&quot;. Найти сумму...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
11.11.2011, 23:03 #2
Temoffey, выглядит как бейсик или пайтон.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2011, 23:03
Привет! Вот еще темы с ответами:

Изменить цикл for на цикл do-while - C++
помогите передать программу с цикла FOR в цикл DO-WHILE #include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

заменить цикл for на цикл while - C++
#include &lt;iostream&gt; using namespace std; int main() { int N, M, sum; cout &lt;&lt; &quot;Введите число N:&quot; &lt;&lt; endl; ...

Эйлеров цикл и цепь - Дискретная математика
1) Найти эйлеров граф и указать в нем эйлеров цикл (нумерацией ребер) Вроде как первый, т.к. степени вершин четные. Но цикл не могу...

Существует ли Эйлеров цикл? - Дискретная математика
Существует ли Эйлеров цикл, если ровно две вершины имеют нечётную степень? Граф ненаправленный.


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru