Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 5

Как можно зациклить поиск в ширину

18.12.2013, 23:17. Показов 731. Ответов 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
namespace Ochered
{
    public class CQueue<T>
    {
        private T[] _array;
        private int size;
        private const int deafaultCapacity = 10;
        private int capacity;
        private int head;
        private int tail;
        public CQueue()
        {
            capacity = deafaultCapacity;
            this._array = new T[deafaultCapacity];
            this.size = 0;
            this.head = -1;
            this.tail = 0;
        }
        public bool Zero()
        {
            return size == 0;
        }
        public void AddEnd(T newElement)
        {
            if (this.size == this.capacity)
            {
                T[] newQueue = new T[2 * capacity];
                Array.Copy(_array, 0, newQueue, 0, _array.Length);
                _array = newQueue;
                capacity *= 2;
            }
            size++;
            _array[tail++ % capacity] = newElement;
        }
        public T TakeFirst()
        {
            if (this.size == 0)
            {
                throw new InvalidOperationException();
            }
            size--;
            return _array[++head % capacity];
        }
        public int Count
        {
            get
            {
                return this.size;
            }
        }
 
    }
    class Program
    {
        static char[] mass = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'r' };
        
        static void Main()
        {
            int[,] matr = {
                              {0,1,1,1,0,0,0,0,0,0,0,0,0,0},
                              {0,0,0,0,1,1,0,0,0,0,0,0,0,0},
                              {0,0,0,0,1,0,0,0,0,1,0,0,0,0},
                              {0,0,0,0,0,0,0,0,0,1,1,0,0,0},
                              {0,0,0,0,0,0,1,0,0,0,0,0,0,0},
                              {0,0,0,0,0,0,0,1,1,0,0,0,0,0},
                              {0,0,0,0,0,0,0,1,0,0,0,0,0,0},
                              {0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                              {0,0,0,0,0,0,0,0,0,0,0,0,1,0},
                              {0,0,0,0,0,0,0,0,0,0,0,1,0,0},
                              {0,0,0,0,0,0,0,0,0,0,0,1,0,0},
                              {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                              {0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                              {0,0,0,0,0,0,0,0,0,0,0,0,0,0}
                             };
            CQueue<int> queue = new CQueue<int>();
            int n = 14, act = 0;
            Console.WriteLine("\nМатрица переходов:");
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(matr[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
            int[] visit = new int[n];
            queue.AddEnd(0); visit[0] = 1;
            Console.Write(mass[0] + " ");
            while (!queue.Zero())
            {
                int i = 0;
                act = queue.TakeFirst();
                for (i = 0; i < n; i++)
                    if (matr[act, i] == 1 && visit[i] == 0)
                    {
                        queue.AddEnd(i);
                        visit[i] = 1;
                        Console.Write(mass[i] + " ");
                    }
            }
 
        }
    }
}
и вот этот момент нужно зациклить, всю голову сломал и ни чего не получается...
C#
1
2
3
4
5
6
7
8
9
10
11
12
public void AddEnd(T newElement)
        {
            if (this.size == this.capacity)
            {
                T[] newQueue = new T[2 * capacity];
                Array.Copy(_array, 0, newQueue, 0, _array.Length);
                _array = newQueue;
                capacity *= 2;
            }
            size++;
            _array[tail++ % capacity] = newElement;
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2013, 23:17
Ответы с готовыми решениями:

Поиск в ширину в графах
В задаче тимуса 1837 попыталась сделать словарь, где ключ - строка (фамилия), а значения - лист из участников команды, с которыми когда-то...

Как можно посчитать ширину дерева?
Товарищи!!!!! подскажите пожалуйста как можно посчитать ширину дерева!!!????? (под шириной дерева понимается максимальное количество...

Поиск в ширину - как исправить бесконечную рекурсию?
Привет! Я невеликий знаток питона, но лабу сдать нужно. :( Нужно найти кратчайший путь между двумя вершинами неориентированного графа...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2013, 23:17
Помогаю со студенческими работами здесь

CSS. Как можно задать изменяющуюся ширину?
Мне нужно чтобы ширина ячейки менялась, взависимости от длинны строки... т.е. чтобы перенос на следующую строку не происходил? Подскажите...

Как правильно зациклить программу чтобы выходить из неё можно было при вводе "exit"
Здравствуйте, как правильно зациклить программу чтобы выходить из неё можно было при вводе &quot;exit&quot; или еще чего-нибудь... Заранее...

Помогите зациклить рекурсивный поиск
Помогите зациклить поиск(пока работает для 2 список, если их больше не работает), вот часть кода ...

Как можно указать ширину div в пикселях через его стиль???
Я плохо шарю в ЯваСкрипт, но тут возникла проблема. Нужно размерами DIV управлять. Они задаюся через стиль &lt;div id='scrolldiv' ...

Доброго времяни суток уважаемые. Как можно поставить слайдер на всю ширину?
Слайдер нужно поставит между меню и заголовкам на всю ширину, и нужно что бы слайдер был только на гл.странице. И вопрос как это сделать...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru