Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
сергей84
2 / 2 / 1
Регистрация: 16.04.2012
Сообщений: 9
#1

Найти все варианты комбинации чисел 0 1 2 - C#

16.04.2012, 17:32. Просмотров 2374. Ответов 2
Метки нет (Все метки)

Подскажите пожалуйста алгоритм, для генерации всех сочетаний, условия следующие:

http://www.cyberforum.ru/csharp-beginners/thread1681464.html
Есть число переменной длинны состоящее из 0, 1, 2
Нужно найти все варианты комбинации чисел 0 1 2.

P.S на C# пожалуйста, другого я пока ничего не понимаю .
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2012, 17:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти все варианты комбинации чисел 0 1 2 (C#):

Перебрать все комбинации заданных чисел
Здравствуйте. Это легче показать на примере. Будет нагляднее. Например, в...

Вывести все возможные комбинации чисел
Здравствуйте, помогите с задачкой пожалуйста. от 1-го до n нужно вывести все...

Найти все возможные комбинации
Есть строка, к примеру . Где первая цифра в ячейке это номер предмета, а после...

Найти все возможные комбинации из диапазона
Здравствуйте! Нужно найти все перестановки от 0000000 до 9999999. По началу...

Как найти все возможные комбинации букв в слове?
Допустим есть слово ПОРТ. Нужно получить все возможные комбинации букв из этого...

2
Delog
I ♥ C#
463 / 254 / 25
Регистрация: 07.05.2010
Сообщений: 567
17.04.2012, 15:18 #2
Лучший ответ Сообщение было отмечено сергей84 как решение

Решение

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace DelogFromCyberforum
{
    class AllPossibleCombinations
    {
        static string FromDec(int Dec, int ConvertTo)
        {
            StringBuilder result = new StringBuilder();
            if (ConvertTo >= 2 && ConvertTo <= 36 && Dec >= 0)
            {
                const string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                while (Dec >= ConvertTo)
                {
                    result.Insert(0, digits[Dec % ConvertTo]);
                    Dec /= ConvertTo;
                }
                result.Insert(0, digits[Dec]);
            }
            return result.ToString();
        }
 
        static void Main()
        {
            //можете менять эти константы
            const byte maxLength = 3, alphabet = 3;
 
            int maxNumber = 0;
            for (int i = 0; i < maxLength; i++)
            {
                maxNumber += (alphabet - 1) * (int)Math.Pow(alphabet, i);
            }
            var allCombinations = Enumerable.Range(0, maxNumber + 1).Select(x => FromDec(x, alphabet).PadLeft(maxLength, '0'));
            foreach (var s in allCombinations)
                Console.WriteLine(s);
            Console.ReadKey();
        }
    }
}
Добавлено через 19 часов 7 минут
Сегодня глянул свежим взглядом. Можно
сократить
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace DelogFromCyberforum
{
    class AllPossibleCombinations
    {
        static string FromDec(int Dec, int ConvertTo)
        {
            StringBuilder result = new StringBuilder();
            if (ConvertTo >= 2 && ConvertTo <= 36 && Dec >= 0)
            {
                const string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                while (Dec >= ConvertTo)
                {
                    result.Insert(0, digits[Dec % ConvertTo]);
                    Dec /= ConvertTo;
                }
                result.Insert(0, digits[Dec]);
            }
            return result.ToString();
        }
 
        static void Main()
        {
            const byte maxLength = 3, alphabet = 3;
 
            var allCombinations = Enumerable.Range(0, (int)Math.Pow(alphabet, maxLength)).Select(x => FromDec(x, alphabet).PadLeft(maxLength, '0'));
            
            foreach (var s in allCombinations)
                Console.WriteLine(s);
            Console.ReadKey();
        }
    }
}
1
сергей84
2 / 2 / 1
Регистрация: 16.04.2012
Сообщений: 9
17.04.2012, 16:35  [ТС] #3
Спасибо большое, это подойдет,правда я забыл добавить, что количество 0, 1, 2, в массиве фиксировано. Хотя не так уж и важно, просто выберу комбинации из результата которые содержат нужное количество 0, 1, 2.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2012, 16:35
Привет! Вот еще темы с решениями:

Все возможные комбинации
Как вывести построчно все возможные комбинации, нижний, верхний регистр и...

Вывести все возможные комбинации 5 из 10
Здравствуйте,хочу сделать программу в которую буду писать 10 цифр от 1 до...

Вывести все возможные комбинации 5 из 50
Здравствуйте,у меня есть список номеров ...

Вывести все возможные комбинации 6 из 50
Здравствуйте,у меня есть список номеров...


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

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

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