Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
10 / 8 / 0
Регистрация: 01.02.2010
Сообщений: 117

Как обойтись без вложенного цикла?

05.09.2010, 15:10. Показов 2162. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно в данном конкретном случае перебрать, например, все возможные комбинации символов цепочки из нулей и единиц. Но! Нужно обойтись без вложенного цикла т.к. изначально не известна длина этой цепочки, а, следовательно, и степень вложенности
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2010, 15:10
Ответы с готовыми решениями:

Как обойтись без сиаиков в библиотеках
Я вот сделал библиотеку dll и сделал ссылку и подключил в using И у классов стоит public class Но при обращении к функциям...

Рефлексия. Как обойтись без цикла?
Доброй ночи форумчане. В универе проходим такую тему как "рефлексия". И возник вопрос в задании: "вызывает некоторый метод...

Как обойтись без списка?
Есть список Tick в который несколько раз в секунду добавляются новые объекты (Time, Volume). Возможны ситуации, когда объекты не...

13
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
05.09.2010, 23:52
JackRE, используй цикл while (бесконечный).
C#
1
2
3
4
5
6
while(true)
{
    ...
    ...
    if(/*условие выхода*/) break;
}
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
06.09.2010, 00:11
JackRE, обычно это делается с помощью рекурсии.

Добавлено через 1 минуту
Если длина цепочки небольшая, можно просто перебрать все числа от 0 до 2^n-1, где n - длина цепочки. Битовые представления этих чисел и будут всеми возможными комбинациями.
0
10 / 8 / 0
Регистрация: 01.02.2010
Сообщений: 117
06.09.2010, 10:56  [ТС]
Хохол, что-то не могу придумать как это реализовать с помощью рекурсии.


Цитата Сообщение от Хохол Посмотреть сообщение
Если длина цепочки небольшая, можно просто перебрать все числа от 0 до 2^n-1, где n - длина цепочки. Битовые представления этих чисел и будут всеми возможными комбинациями.
Да, неплохой метод, но он подойдет только для двоичных. А мне дальше надо будет реализовывать уже с различными символами
0
Padawan
 Аватар для Johnny_D
473 / 323 / 30
Регистрация: 30.01.2010
Сообщений: 1,841
06.09.2010, 11:18
А можно попробовать использовать IEnumerable класс, и оператор foreach
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
06.09.2010, 16:19
введи требуюмую систему счисления 0..z и жарь одним циклом от 0 до z!
тока про диапазоны не забудь
собсна, в чем проблема-то?
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
06.09.2010, 17:02
На цпп:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const int p = 3; //основание системы счисления
const int n = 4; //длина цепочки
int ar[100];
 
void proc(int pos)
{
    if(pos == n)
    {
        //тут обрабатываем текущую комбинацию
        return;
    }
    for(int i = 0; i < p; i++)
    {
        ar[pos] = i;
        proc(pos+1);
    }
}
 
int main()
{
    proc(0);
}
0
10 / 8 / 0
Регистрация: 01.02.2010
Сообщений: 117
07.09.2010, 16:50  [ТС]
Хохол, что-то в вашем коде не так. Неправильно работает. И вообще зачем нужен цикл, если при первой же итерации рекурсивно возвращается функция?
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
07.09.2010, 17:01
А что в моем коде не так?
0
10 / 8 / 0
Регистрация: 01.02.2010
Сообщений: 117
07.09.2010, 17:20  [ТС]
Я не понял зачем нужен цикл, да и выдает почти одни нули.
Подождите, а что вы имели ввиду под "//тут обрабатываем текущую комбинацию"?
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
07.09.2010, 17:28
Ну делаете там что хотите. Например выводите на печать.
C++
1
2
3
4
5
6
7
    if(pos == n)
    {
        for(int i = 0; i < n; i++)
            cout << ar[i] << ' ';
        cout << endl;
        return;
    }
0
10 / 8 / 0
Регистрация: 01.02.2010
Сообщений: 117
07.09.2010, 17:49  [ТС]
Ваш код выдает первую комбинацию 2222, а остальные пустые 0000.
Возможно потому, что он проходит один раз, хотя не факт
0
Эксперт С++
 Аватар для Хохол
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
07.09.2010, 17:57
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
#include <fstream>
using namespace std;
 
ofstream cout("output.txt");
 
const int p = 3, n = 4;
int ar[100];
 
void proc(int pos)
{
    if(pos == n)
    {
        for(int i = 0; i < n; i++)
            cout << ar[i] << ' ';
        cout << endl;
        return;
    }
    for(int i = 0; i < p; i++)
    {
        ar[pos] = i;
        proc(pos+1);
    }
}
 
int main()
{
    proc(0);
}
output.txt:

Code
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
0 0 0 0 
0 0 0 1 
0 0 0 2 
0 0 1 0 
0 0 1 1 
0 0 1 2 
0 0 2 0 
0 0 2 1 
0 0 2 2 
0 1 0 0 
0 1 0 1 
0 1 0 2 
0 1 1 0 
0 1 1 1 
0 1 1 2 
0 1 2 0 
0 1 2 1 
0 1 2 2 
0 2 0 0 
0 2 0 1 
0 2 0 2 
0 2 1 0 
0 2 1 1 
0 2 1 2 
0 2 2 0 
0 2 2 1 
0 2 2 2 
1 0 0 0 
1 0 0 1 
1 0 0 2 
1 0 1 0 
1 0 1 1 
1 0 1 2 
1 0 2 0 
1 0 2 1 
1 0 2 2 
1 1 0 0 
1 1 0 1 
1 1 0 2 
1 1 1 0 
1 1 1 1 
1 1 1 2 
1 1 2 0 
1 1 2 1 
1 1 2 2 
1 2 0 0 
1 2 0 1 
1 2 0 2 
1 2 1 0 
1 2 1 1 
1 2 1 2 
1 2 2 0 
1 2 2 1 
1 2 2 2 
2 0 0 0 
2 0 0 1 
2 0 0 2 
2 0 1 0 
2 0 1 1 
2 0 1 2 
2 0 2 0 
2 0 2 1 
2 0 2 2 
2 1 0 0 
2 1 0 1 
2 1 0 2 
2 1 1 0 
2 1 1 1 
2 1 1 2 
2 1 2 0 
2 1 2 1 
2 1 2 2 
2 2 0 0 
2 2 0 1 
2 2 0 2 
2 2 1 0 
2 2 1 1 
2 2 1 2 
2 2 2 0 
2 2 2 1 
2 2 2 2
1
10 / 8 / 0
Регистрация: 01.02.2010
Сообщений: 117
07.09.2010, 18:37  [ТС]
Хохол, спасибо, заработало! Сейчас буду дальше разбираться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2010, 18:37
Помогаю со студенческими работами здесь

как обойтись без ссылки на окно
Дело в том что мне нужно одним окном вызвать метод другого. код openSolution(lblINIFileName); // Не работает тогда я сделал вот так ...

Как обойтись без ViewBag в представлениях
Расказывали, что в больших проектах, ViewBag лучше не использовать а использовать Model и при этом чтобы не было вобще работы с базами. Но...

Как обойтись без невидимых списков?
здравствуйте. пишу один проект на C#. ниже приведу код а потом вопрос. var AudioList =...

Как эффективно обойтись без сессии в ASP.NET?
Есть запрет на использование Session в проекте. Пытаемся обойтись подножными средствами. На повестке дня стояли скрытые поля, QueryString и...

Произвольная глубина вложенного цикла
Доброго времени суток. Прошу о помощи, балуюсь с брутфорсом и подобными штуками, необходимо установить глубину вложенных циклов равной...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru