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 | // 1: [0, 0] // 2: [0, 1] // 3: [0, 2] // 4: [0, 3] // 5: [1, 1] // 6: [1, 2] // 7: [1, 3] // 8: [2, 2] // 9: [2, 3] // 10: [3, 3] using System; public static class CombinationsWithRep { private static int numberofCombos; private static int n; private static int k; private static int [] storageArr; public static void Main() { n = 4; k = 2; storageArr = new int [k]; GenCombinationsWithRep(); } private static void GenCombinationsWithRep( int index = 0, int element = 0) { if (index >= storageArr.Length) { PrintCombo(); return ; } for ( int i = element; i < n; i++) { storageArr[index] = i; GenCombinationsWithRep(index + 1, i); } } private static void PrintCombo() { Console.WriteLine( "{0,3}: [{1}]" , ++numberofCombos, string .Join( ", " , storageArr)); } } |