Advertisement
svetlozar_kirkov

Zero Subsets

Dec 7th, 2014
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.54 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace ZeroSubset
  7. {
  8.     class ZeroSubset
  9.     {
  10.         static void Main()
  11.         {
  12.             Console.WriteLine("Enter five integers, separated by space:");
  13.             string input = Console.ReadLine();
  14.             List<int> nums = new List<int>();
  15.             string[] split = input.Split(' ');
  16.             List<string> zeroSubsets = new List<string>();
  17.             int count = 0;
  18.             for (int i = 0; i < split.Length; i++)
  19.             {
  20.                 nums.Add(Convert.ToInt32(split[i].ToString()));
  21.             }
  22.             foreach (var permu in Permutate(nums, nums.Count))
  23.             {
  24.                 List<int> temp = new List<int>();
  25.                 foreach (var i in permu)
  26.                 {
  27.                     temp.Add(Convert.ToInt32(i));
  28.                     if (temp.Count>1 && temp.Sum()==0)
  29.                     {
  30.                         string zerosubsetTemp = string.Join(" + ", temp);
  31.                         if (zeroSubsets.Contains(zerosubsetTemp))
  32.                         {
  33.                             continue;
  34.                         }
  35.                         else
  36.                         {
  37.                             zeroSubsets.Add(zerosubsetTemp);
  38.                             count++;
  39.                         }
  40.                     }
  41.                 }
  42.             }
  43.             if (count == 0)
  44.             {
  45.                 Console.WriteLine("\nNo zero subsets found!\n");
  46.             }
  47.             else
  48.             {
  49.                 Console.WriteLine("\nZero subsets found: \n");
  50.                 Console.WriteLine(new string('=',30));
  51.                 foreach (var subset in zeroSubsets)
  52.                 {
  53.                     Console.WriteLine("{0} = 0",subset);
  54.                 }
  55.             }
  56.         }
  57.         public static void RotateRight(IList sequence, int count)
  58.         {
  59.             object tmp = sequence[count - 1];
  60.             sequence.RemoveAt(count - 1);
  61.             sequence.Insert(0, tmp);
  62.         }
  63.         public static IEnumerable<IList> Permutate(IList sequence, int count)
  64.         {
  65.             if (count == 1) yield return sequence;
  66.             else
  67.             {
  68.                 for (int i = 0; i < count; i++)
  69.                 {
  70.                     foreach (var perm in Permutate(sequence, count - 1))
  71.                         yield return perm;
  72.                    
  73.                     RotateRight(sequence, count);
  74.                 }
  75.             }
  76.         }
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement