Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
max498
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 9
1

Волновой алгоритм

22.05.2013, 13:29. Просмотров 462. Ответов 0
Метки нет (Все метки)

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 private void Raschot()
        {
            if (StartVertex == null || EndVertex == null)
            {
                MessageBox.Show("Не заданы Начальная и Конечная точка");
                return;
            }
 
            int Tl = -1;
 
            foreach (Vertex item in lv)
            {
                item.TimeLabel = Tl;
 
            }
 
            List<Vertex> OldFront = new List<Vertex>();
            List<Vertex> NewFront = new List<Vertex>();
 
            OldFront.Add(StartVertex);
 
            while (true)
            {
                NewFront = new List<Vertex>();
                ++Tl;
                foreach (Vertex vertex in OldFront)
                {
                    vertex.TimeLabel = Tl;
                    foreach (Rebro rebro in lr)
                    {
                        if (rebro.VertexOne==vertex)
                        {
                            if (rebro.VertexTwo.TimeLabel == -1)
                            {
                                NewFront.Add(rebro.VertexTwo);
                            }
                            
                        }
                        if (rebro.VertexTwo == vertex)
                        {
                            if (rebro.VertexOne.TimeLabel == -1)
                            {
                                NewFront.Add(rebro.VertexOne);
                            }
                        }
                    }
                }
 
 
                if (NewFront.Count == 0)
                {
                    MessageBox.Show("Граф не связанный , пути отсутствуют ");
                    return;
                }
                
                if (NewFront.Contains(EndVertex))
                {
                    MessageBox.Show("Конечный путь существует длинной "+(++Tl));          
 
 
                    ProrisovkaPuth();
                    return;
                }
                OldFront = NewFront;
                
            }
        }
 
        private void ProrisovkaPuth()
        {
            while (true)
            {
                
            }
            
        }
 
        private Vertex FindVertex(Point Location, double R)
        {
            Vertex v = null;
            foreach (Vertex item in lv)
            {
                if (Location.X > item.Location.X - cs.Size.Width * R &&
                    Location.X < item.Location.X + cs.Size.Width * R &&
                    Location.Y > item.Location.Y - cs.Size.Height * R &&
                    Location.Y < item.Location.Y + cs.Size.Height * R)
                {
                    v = item;
                    break;
                }
            }
            return v;
        }
 
        private void MyRefresh()
        {
            bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            Graphics g = Graphics.FromImage(bmp);
 
            foreach (Rebro item in lr)
            {
 
                Pen pen = new Pen(cs.ColRebroSample);
 
                if (item.Status== Rebro.StatusRebro.Путь)
                {
                    pen = new Pen(cs.ColRebroPath);
                }
 
                g.DrawLine(pen,
                    item.VertexOne.Location,
                    item.VertexTwo.Location);
            }
 
            foreach (Vertex item in lv)
            {
                Brush brush = new SolidBrush(cs.ColVertexSample);
                switch (item.Status)
                {
                    case Vertex.StatusVertex.Начальная:
                        brush = new SolidBrush(cs.ColVertexBeginner);
                        break;
                    case Vertex.StatusVertex.Конечная:
                        brush = new SolidBrush(cs.ColVertexEnder);
                        break;
                    case Vertex.StatusVertex.Обычная:
                        break;
                    default:
                        break;
                }
                g.FillEllipse(brush,
                              new Rectangle(
                                    new Point(
                                        item.Location.X - cs.Size.Width / 2,
                                        item.Location.Y - cs.Size.Height / 2),
                                    cs.Size));
            }
 
            if (v1e != null)
            {
                g.DrawLine(Pens.AliceBlue, v1e.Location, p2e);
            }
 
            pictureBox1.BackgroundImage = bmp;
            pictureBox1.Refresh();
        }
В общем есть что-то типо такого , надо что бы на найденом пути поменялся цвет ребра , помогите ;3
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 13:29
Ответы с готовыми решениями:

Волновой осциллятор
Всем привет, подскажите пожалуйста возможно ли реализовать волновой осциллятор...

Волновой алгоритм
Пытался реализовать волновой алгоритм по примеру...

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар)
Хочу разработать алгоритм для решения головоломки с подвижными дисками...

Волновой алгоритм (Ли)
Доброго времени суток. Как реализовать построение пути на двумерной матрице...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 13:29

Волновой алгоритм
Уважаемые форумчани,нужна ваша помощь,вот никак нигде в интернете не могу найти...

Волновой алгоритм
Алгоритм начинает работу в клетке, отмеченной звёздочкой. Все клетки - пустые, ...

Волновой алгоритм
Подскажите пожалуйста, на сколько сложно изготовить из матрицы 0000 0000 0000...


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

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

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