namespace BOJ
{
class No_7490
{
static int N;
static void Main()
{
int t = int.Parse(Console.ReadLine());
while(t-- > 0)
{
N = int.Parse(Console.ReadLine());
DFS(0, 1, 1, 1, "1");
Console.WriteLine();
}
}
static void DFS(int sum, int sign, int num, int n, string str)
{
if(n == N)
{
sum += (num * sign);
if(sum==0)
{
Console.WriteLine(str);
}
}
else
{
DFS(sum, sign, num * 10 + (n + 1), n + 1, str + ' ' + (char)(n + 1 + '0'));
DFS(sum + (sign * num), 1, n + 1, n + 1, str + '+' + (char)(n + 1 + '0'));
DFS(sum + (sign * num), -1, n + 1, n + 1, str + '-' + (char)(n + 1 + '0'));
}
}
}
}
처음에는 리스트에 담아 sort도 해보고 orderby도 해보았지만 정렬이 잘 되지 않았다
그래서 0이 되었을때 바로바로 출력할 수 있게 하였다. [참고]
구현
문자열
브루트포스 알고리즘
백트래킹