lmarkov

Sum Of Subsets

Dec 6th, 2012
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.47 KB | None | 0 0
  1. /*
  2.  * We are given 5 integer numbers. Write a program that checks if the sum of some subset of them is 0. Example: 3, -2, 1, 1, 8  1+1-2=0.
  3. */
  4.  
  5. using System;
  6.  
  7. class SumOfSubsets
  8. {
  9.     static void Main()
  10.     {
  11.         int[] number = new int[5];
  12.         byte countZero = 0;
  13.         int sumZeroCounter = 0;
  14.         int numbersCount = number.Length;
  15.  
  16.         for (int variablesCount = 0; variablesCount < numbersCount; variablesCount++)
  17.         {
  18.             number[variablesCount] = InputDataInt(variablesCount);            
  19.         }
  20.  
  21.         Console.WriteLine();
  22.  
  23.         for (int i = 0; i < numbersCount; i++)
  24.         {
  25.             if (number[i] == 0)
  26.             {
  27.                 countZero++;
  28.             }            
  29.         }
  30.  
  31.         if (countZero == numbersCount)
  32.         {
  33.             Console.WriteLine("All numbers are 0!" + Environment.NewLine);
  34.         }
  35.  
  36.         for (int j = 0; j < numbersCount; j++)
  37.         {
  38.             for (int k = j + 1; k < numbersCount; k++)
  39.             {
  40.                 if (number[j] + number[k] == 0)
  41.                 {
  42.                     sumZeroCounter++;
  43.                     Console.WriteLine("{2}) {0} + {1} = 0", number[j], number[k], sumZeroCounter);
  44.                 }
  45.                 for (int l = k + 1; l < numbersCount; l++)
  46.                 {
  47.                     if (number[j] + number[k] + number[l] == 0)
  48.                     {
  49.                         sumZeroCounter++;
  50.                         Console.WriteLine("{3}) {0} + {1} + {2} = 0", number[j], number[k], number[l], sumZeroCounter);
  51.                     }
  52.                     for (int m = l + 1; m < numbersCount; m++)
  53.                     {
  54.                         if (number[j] + number[k] + number[l] + number[m] == 0)
  55.                         {
  56.                             sumZeroCounter++;
  57.                             Console.WriteLine("{4}) {0} + {1} + {2} + {3} = 0", number[j], number[k], number[l], number[m], sumZeroCounter);
  58.                         }
  59.                         for (int n = m + 1; n < numbersCount; n++)
  60.                         {
  61.                             if (number[j] + number[k] + number[l] + number[m] + number[n] == 0)
  62.                             {
  63.                                 sumZeroCounter++;
  64.                                 Console.WriteLine("{5}) {0} + {1} + {2} + {3} + {4} = 0", number[j], number[k], number[l], number[m], number[n], sumZeroCounter);
  65.                             }
  66.                         }
  67.                     }
  68.                 }
  69.             }
  70.         }
  71.        
  72.        
  73.         if (sumZeroCounter == 1)
  74.         {
  75.             Console.WriteLine();
  76.             Console.WriteLine("There is {0} combination where the sum of subsets is equal to zero!", sumZeroCounter);
  77.         }
  78.         else
  79.         {
  80.             Console.WriteLine("There are {0} combinations where the sum of subsets is equal to zero!", sumZeroCounter);
  81.         }
  82.         Console.WriteLine();
  83.         Main();
  84.     }
  85.  
  86.     static int InputDataInt(int variablesCount)
  87.     {
  88.         int number;
  89.         string invalidInput = "Please enter a value between " + int.MinValue + " and " + int.MaxValue + Environment.NewLine;
  90.         Console.WriteLine("Enter number " + (variablesCount + 1) + ": ");
  91.         while (!(int.TryParse(Console.ReadLine(), out number)))
  92.         {
  93.             Console.WriteLine(invalidInput);
  94.             Console.WriteLine("Enter number " + (variablesCount + 1) + ": ");
  95.         }
  96.         return number;
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment