Advertisement
ivanov_ivan

SubsetSums

Apr 5th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.29 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace HW06.SubsetSums
  8. {
  9.     class SubsetSums
  10.     {
  11.         static void Main()
  12.         {
  13.             int n = int.Parse(Console.ReadLine());
  14.             int[] numbers = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  15.             bool Subsets = false;
  16.             int length = (int)Math.Pow(2 , numbers.Length) - 1;
  17.  
  18.             for(int i = length; i > 0; i--)
  19.             {
  20.                 int sum = 0;
  21.  
  22.                 StringBuilder sb = new StringBuilder();
  23.  
  24.                 for(int j = 0; j < numbers.Length; j++)
  25.                 {
  26.                     int mask = i >> j;
  27.  
  28.                     if(mask % 2 != 0)
  29.                     {
  30.                         sum += numbers[j];
  31.                         sb.Append(string.Format("{0} + " , numbers[j]));
  32.                     }
  33.                 }
  34.  
  35.                 if(sum == n && sb.Length != 0)
  36.                 {
  37.                     Subsets = true;
  38.                     Console.WriteLine("{0} = {1}" , sb.Remove(sb.Length - 2 , 2), n);
  39.                 }
  40.             }
  41.  
  42.             if(!Subsets)
  43.             {
  44.                 Console.WriteLine("No matching subsets.");
  45.             }
  46.         }
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement