View difference between Paste ID: MDkgpmgV and JgBT4nCV
SHOW: | | - or go back to the newest paste.
1
int[] numbers = { 1, 1, 1, -1, -1 };
2
3
int coefficientCombinations = (int) Math.Pow(2, numbers.Length) - 1;
4
5
for (int coefficients = coefficientCombinations; coefficients > 0; coefficients--)
6
{
7
    if(onlyOneBitSet(coefficients))
8
    {
9
        continue;
10
    }
11
    int sum = 0;
12
    for (int index = 0; index < numbers.Length; index++)
13
    {
14
        int bitIndex = (numbers.Length - 1) - index;
15
        int numberIndex = index;
16
        int coefficient = getBit(coefficients, bitIndex);
17
        sum += coefficient * numbers[numberIndex];
18
    }
19
    if (sum == 0)
20
    {
21
        //Print the Sum
22
    }
23
}
24
25
static int getBit(int coefficients, int bitIndex)
26
{
27
    return (coefficients >> bitIndex) & 1;
28
}
29
30
static bool onlyOneBitSet(int coefficients)
31
{
32
    int setBitCount = 0;
33
    int highestBit = 31;
34
    for(int i = 0; i <= highestBit; i++)
35
    {
36
        if(((coefficients >> i) & 1) == 1)
37
        {
38
            setBitCount++;
39
        }
40
    }
41
   if(setBitCount == 1)
42
    {
43
        return true;
44
    }
45
    else
46
    {
47
        return false;
48
    }
49
}