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

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

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

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

Есть число переменной длинны состоящее из 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
Ответы с готовыми решениями:

Все возможные комбинации чисел
Есть числа 1,2,3,7,8,9. Как вывести их все возможные комбинации, если...

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

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

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

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

2
Delog
I ♥ C#
464 / 255 / 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 / 0
Регистрация: 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 до...


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

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

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