Algorithm
[BOJ] 3040 백설 공주와 일곱 난쟁이
일등하이
2023. 2. 6. 22:14
반응형
https://www.acmicpc.net/problem/3040
3040번: 백설 공주와 일곱 난쟁이
매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.
www.acmicpc.net
조합
using System;
using System.Linq;
namespace smilejsu
{
class Program
{
private static int[] arr = new int[9];
static void Main(string[] args)
{
for (int i = 0; i < 9; i++)
{
arr[i] = int.Parse(Console.ReadLine());
}
string input = "012345678";
int combinationLength = 7;
GenerateCombinations(input, "", combinationLength, 0);
}
static void GenerateCombinations(string input, string output, int combinationLength, int index)
{
//Console.WriteLine("{0}", output);
if (output.Length == combinationLength)
{
int sum = 0;
for (int i = 0; i < output.Length; i++)
{
int idx = int.Parse(output[i].ToString());
sum += arr[idx];
//Console.Write("{0} ", idx);
}
//Console.WriteLine();
if (sum == 100)
{
for (int i = 0; i < output.Length; i++)
{
int idx = int.Parse(output[i].ToString());
//sum += arr[idx];
Console.WriteLine("{0}", arr[idx]);
}
//Console.WriteLine(output);
}
return;
}
if (index >= input.Length)
{
return;
}
GenerateCombinations(input, output + input[index], combinationLength, index + 1);
GenerateCombinations(input, output, combinationLength, index + 1);
}
}
}
반응형