Advertisement
AnitaN

05.ConditionalStatementsHomework/12.ZeroSubset

Mar 29th, 2014
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.72 KB | None | 0 0
  1. //Problem 12*: Zero Subset
  2. //We are given 5 integer numbers. Write a program that finds all subsets of these numbers whose sum is 0.
  3. //Assume that repeating the same subset several times is not a problem.
  4.  
  5. using System;
  6.  
  7. class ZeroSubset
  8. {
  9.     static void Main()
  10.     {
  11.         Console.WriteLine("Enter the wanted sum of the subsets:");
  12.         long wantedSum = long.Parse(Console.ReadLine());
  13.         Console.WriteLine("Enter the number of elements:");
  14.         long numberOfElements = long.Parse(Console.ReadLine());
  15.         long[] elements = new long[numberOfElements];
  16.         int counter = 0;
  17.         string subset = "";
  18.         for (int i = 0; i < elements.Length; i++)
  19.         {
  20.             Console.WriteLine("Enter element № {0}", i + 1);
  21.             elements[i] = long.Parse(Console.ReadLine());
  22.         }
  23.         int maxSubsets = (int)Math.Pow(2, numberOfElements);
  24.         for (int i = 1; i < maxSubsets; i++)
  25.         {
  26.             subset = "";
  27.             long checkingSum = 0;
  28.             for (int j = 0; j <= numberOfElements; j++)
  29.             {
  30.                 int mask = 1 << j;
  31.                 int nAndMask = i & mask;
  32.                 int bit = nAndMask >> j;
  33.                 if (bit == 1)
  34.                 {
  35.                     checkingSum = checkingSum + elements[j];
  36.                     subset = subset + " " + elements[j];
  37.                 }
  38.             }
  39.             if (checkingSum == wantedSum)
  40.             {
  41.                 Console.WriteLine("Number of subest that have the sum of {0}", wantedSum);
  42.                 counter++;
  43.                 Console.WriteLine("This subset has a sum of {0} : {1} ", wantedSum, subset);
  44.             }
  45.         }
  46.         Console.WriteLine(counter);
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement