Member 11484114 Ответов: 3

Получение комбинации чисел


Я хочу передать число в качестве входных данных и получить список строковых массивов(в определенном формате) в качестве выходных данных.

Например:

Если вход равен 4, то выход должен быть

[{ "0", "1", "2", "3", "4"},
{ "0", "1", "2", "3&4"},
{ "0", "1", "2&3&4"},
{ "0", "1&2", 3", 4"},
{ "0", "1", "2&3", "4"},
{ "0", "1&2&3", "4"},
{ "0", "1&2&3&4"},
{ "0&1", "2&3", "4"},
{ "0&1&2", "3&4"},
{ "0&1", "2&3&4"},
{ "0&1", "2", "3&4"},
{ "0&1", "2&3&4"},
{ "0&1&2&3&4"}]


Во всех комбинациях значения находятся в порядке(от 0 до входного значения) и присутствовали только один раз.

Может ли кто-нибудь помочь мне с какими-нибудь идеями?

заранее спасибо.

Что я уже пробовал:

public static List<string[]> GetAllCombinations()
        {
            List<int> num = new List<int>() { 0, 1, 2, 3, 4 };
            List<string[]> strArr = new List<string[]>();
            int k = 1;
            while (k <= num.Count)
            {
                List<string> st1 = new List<string>();
                for (int i = 0; i < num.Count; i = i + k)
                {
                    string value = "";
                    for (int j = i; (j < num.Count && j < (i + k)); j++)
                    {
                        if (value != "")
                            value = value + "&";
                        value = value + num[j];
                    }
                    st1.Add(value);
                }
                strArr.Add(st1.ToArray());
                k++;
            }
            return strArr;
        }


Он дает большую часть комбинаций, но не средние комбинации.

MadMyche

Покажите, что вы на самом деле пробовали; и выберите один язык, прямо сейчас он выглядит как спам со всеми этими тегами

Member 11484114

Привет,
Я отредактировал вопрос и вставил код, который я пробовал. Но это дает только частичный выход. Кстати, я удалил несколько тегов. Спасибо за это.

Richard MacCutchan

Вы пометили это несколькими языками. Какой из них вы планируете использовать?

Member 11484114

Я планирую использовать его в C#. Даже его в C или python тоже хорошо. Я могу преобразовать его в C#.

3 Ответов

Рейтинг:
2

Patrice T

Прежде всего, ваш образец имеет 13 выходных строк там, где их должно быть 16.

[{ "0", "1", "2", "3", "4"},
{ "0", "1", "2", "3&4"},
{ "0", "1", "2&3", "4"},
{ "0", "1", "2&3&4"},
{ "0", "1&2", "3", "4"},
{ "0", "1&2", "3&4"}, missing
{ "0", "1&2&3", "4"},
{ "0", "1&2&3&4"},
{ "0&1", "2", "3", "4"}, missing
{ "0&1", "2", "3&4"},
{ "0&1", "2&3", "4"},
{ "0&1", "2&3&4"}, this one is repeated 2 times in your sample output
{ "0&1&2", "3", "4"}, missing
{ "0&1&2", "3&4"},
{ "0&1&2&3", "4"}, missing
{ "0&1&2&3&4"}]


Цитата:
Если вход равен 4, то выход должен быть

Вы не дали никакого правила для 4 недостающих строк в результате и дубликата.

Как программист, ваша первая работа состоит в том, чтобы убедиться, что требования и образцы имеют смысл и согласованы.
Затем вам нужно сделать некоторую логику, алгоритм, чтобы решить проблему.
Для каждой строки вы получаете n чисел/цифр и n-1 разделителей, каждый разделитель имеет 2 возможности. Перечисление всех комбинаций разделителей соответствует значениям двоичного счетчика.


Рейтинг:
1

Luc Pattyn

Если бы я дал тебе (я не дам!!!) магическая функция,которая может сделать это для чисел [0, N-1], смогла бы вы получить результаты для [0,N]? Подумайте хорошенько, а потом сделайте именно это.


Рейтинг:
0

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.


Member 11484114

Привет,
Я отредактировал вопрос и вставил код, который я пробовал, который дает только частичный вывод. Знаешь ли ты, чего мне не хватает?