[C#] Arrays - 20 задача


1
20.Write a program that reads two numbers N and K and generates all the variations of K elements from the set [1..N]. Example:

  N = 3, K = 2  -> {1, 1}, {1, 2}, {1, 3}, {2, 1}, {2, 2}, {2, 3}, {3, 1}, {3, 2}, {3, 3}




Отговори



1
Здравейте!
От чисто любопитство някой решил ли е задачата с материала от темата за масиви?
Прегледах решения, но не открих решение само с масиви. Може и да греша, но ми е странно защо имаме тема Arrays - [C#] Arrays - 20 задача, като нямя публикувано нито едно решение с масиви?

Поздрави,
Диди



0
Тук не виждам рекурсия, но може просто много да ми се спи :)
http://pastebin.com/0PgffTg1 answered Jan 9 by Rokata (310 points)
ps ако приемем, че списъците са към тема масиви

от arabella (2576 точки)

0
Благодаря, но искам да видя едно решение само с масиви. Дори да е 200 реда кода;)




0

Сигурно е нещо просто, но не намерих обяснение. Колеги, някаква идея защо тоя код не ми принтира запетайките между елементите?:

 

 

 static void PrintLoops()
        {
            
            Console.Write("{");
            for (int i = 0; i < numberOfLoops; i++)
            {
               Console.Write(string.Join(",", loops[i]));
            }
            Console.WriteLine("}");
 
        }

от cerealBoxx (504 точки)


0
Пробвай така:
Console.Write("{0}{1}", '{', loops[0]); for (int i = 1; i < loops.Length; i++) { Console.Write(", {0}", loops[i]); } Console.WriteLine("}");

от valiyo (492 точки)

0
Изпечатва запетайка в началото за съжаление. Нищо, ще го направя без запетаи.

от cerealBoxx (504 точки)



0
Ето едно масив-но решение и от мен :)
http://pastebin.com/FmNCB7Zc

от PenkoValchev (110 точки)


0

http://pastebin.com/81DeRNRL

(всички пермутации с повторение)


от stanev.plamen (1143 точки)


0
Не ви ли се струва, че задачата е зададена некоректно?
В условието се говори за вариации. За посочения пример N=3 и K=2 трябва да има 3!/(3-2)! = 6 броя вариации. А като правилно решение са дадени 9 броя. Решенията, които съдържат в себе си еднакви числа на всички позиции, не са вариации! В този смисъл примерът не отговаря на условието на задачата.

от ttitto (1950 точки)


0
Всъщност току що научих, че имало и вариации с повторение, чийто брой се изчислява по формулата n^k. Което означава, че заданието е коректно и грешката е в моето незнание.

от ttitto (1950 точки)

0
По принцип си прав, че вариациите са без повтарянето, но в случая просто трябва да се реши задачата като намериш и тези с повтаряне, не обърщай чак такова внимание, дали е вярно или не.

от Hristo.B (3885 точки)



0

GitHub

Решението е с рекурсия и симулира n вложени цикли. Просто пълни вектор(масив с брой елементи равен на n) последователно с всички числа от 1 до n и при всяко извикване на метода се проверява дали вектора не е пълен (всички числа са вече поставени) ако е се показва на конзолата.


от dzhenko (3893 точки)


0

Още едно рекурсивно решение - http://git.io/Q49zpQ .

30 реда със всичката прегледност на света, хах.

Обяснението е същото, като това на 19-та задача, постнато тук , но със съвсем дребна промяна - махнах проверката за вече присъстващ елемент, понеже вече повторенията на елементи са позволени. Добавих и К, като "дъното" на рекурсията, както и проверката за готовност за печатане, вече са сравнение с него.


от georgiwe (720 точки)