반응형
모든 숫자 조합을 출력
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
var sw = new StreamWriter(Console.OpenStandardOutput());
var sr = new StreamReader(Console.OpenStandardInput());
var input = sr.ReadLine().Split();
var num1 = Int32.Parse(input[0]);
var num2 = Int32.Parse(input[1]);
var ints = new int[num1];
Combination_DFS(sw, ints, 0, 0, num2);
sw.Close();
sr.Close();
}
static void Combination_DFS(StreamWriter sw, int[] array, int now, int pos, int r)
{
if (now == r)
{
for (int i = 0; i < r; i++)
{
sw.Write($"{array[i]} ");
}
sw.WriteLine();
return;
}
for (int idx = pos; idx < array.Length; idx++)
{
array[now] = idx + 1;
Combination_DFS(sw, array, now + 1, pos, r);
}
}
}
조합을 출력(재귀 호출하는 부분 pos -> idx + 1로 변경됨)
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
var sw = new StreamWriter(Console.OpenStandardOutput());
var sr = new StreamReader(Console.OpenStandardInput());
var input = sr.ReadLine().Split();
var num1 = Int32.Parse(input[0]);
var num2 = Int32.Parse(input[1]);
var ints = new int[num1];
Combination_DFS(sw, ints, 0, 0, num2);
sw.Close();
sr.Close();
}
static void Combination_DFS(StreamWriter sw, int[] array, int now, int pos, int r)
{
if (now == r)
{
for (int i = 0; i < r; i++)
{
sw.Write($"{array[i]} ");
}
sw.WriteLine();
return;
}
for (int idx = pos; idx < array.Length; idx++)
{
array[now] = idx + 1;
Combination_DFS(sw, array, now + 1, idx + 1, r);
}
}
}
$$ _{3}\mathrm{C}_{2} $$
함께 읽으면 좋은 글
'프로그래밍 > Algorithm' 카테고리의 다른 글
C# [백준 BAEKJOON] 15552번 빠른 A+B (0) | 2024.04.04 |
---|---|
C# [백준 BAEKJOON] 6588번 골드바흐의 추측 (0) | 2024.04.01 |
C# [백준 BAEKJOON] 2981번 검문 (0) | 2024.03.22 |
C# [백준 BAEKJOON] 2501번 약수 구하기 (0) | 2024.03.21 |
일반 더하기 곱셈 vs 고대 이집트 곱셈법 (0) | 2024.03.18 |
댓글