/
Annoying.cs
69 lines (54 loc) · 1.65 KB
/
Annoying.cs
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
class Program
{
static void Main()
{
Solve(digits: 9, pluses: 3, minuses: 1, target: 100, stringSoFar: "");
}
static void Solve(int digits, int pluses, int minuses, int target, string stringSoFar = "")
{
if (digits <= pluses + minuses)
{
return;
}
int currentNumber = 0;
for (int i = digits; i > pluses + minuses; i--)
{
currentNumber = currentNumber * 10 + i;
if (pluses > 0)
{
string plusString = stringSoFar;
if (plusString != "")
{
plusString = plusString + " + ";
}
plusString = $"{plusString}{currentNumber}";
Solve(i - 1, pluses - 1, minuses, target - currentNumber, $"{plusString}");
}
if (minuses > 0)
{
string minusString = stringSoFar;
if (minusString != "")
{
minusString = minusString + " - ";
}
else
{
minusString = "-";
}
minusString = $"{minusString}{currentNumber}";
Solve(i - 1, pluses, minuses - 1, target + currentNumber, $"{minusString}");
}
}
stringSoFar = $"{stringSoFar} + {currentNumber}";
if (currentNumber == target)
{
FoundSolution($"{stringSoFar}");
}
Console.WriteLine(stringSoFar);
}
private static void FoundSolution(string solution)
{
Console.WriteLine(solution);
}
}