Advertisement
Guest User

SpecificSubset.cs

a guest
Jan 25th, 2013
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.46 KB | None | 0 0
  1. using System;
  2.  
  3. class SpecificSubset
  4. {
  5.     static int[] numbers;
  6.     static int K, S;
  7.  
  8.     static void GenSubsetsOfKElements(int index, int[] vector, int start)
  9.     {
  10.         if (index == -1)
  11.             CheckSum(vector);
  12.         else
  13.         {
  14.             for (int i = start; i < numbers.Length; i++)
  15.             {
  16.                 vector[index] = i;
  17.                 GenSubsetsOfKElements(index - 1, vector, i + 1);
  18.             }
  19.         }
  20.     }
  21.  
  22.     static void CheckSum(int[] vector)
  23.     {
  24.         int sum = 0;
  25.  
  26.         foreach (int i in vector) sum += numbers[i];
  27.  
  28.         if (sum == S)
  29.         {
  30.             Console.Write("A subset with {0} elements of sum {1} exists: ", K, S);
  31.             foreach (int i in vector) Console.Write(numbers[i] + " ");
  32.             Console.WriteLine();
  33.  
  34.             Environment.Exit(0);
  35.         }
  36.     }
  37.  
  38.     static void Main()
  39.     {
  40.         Console.Write("N = ");
  41.         int N = int.Parse(Console.ReadLine());
  42.         Console.Write("K = ");
  43.         K = int.Parse(Console.ReadLine());
  44.         Console.Write("S = ");
  45.         S = int.Parse(Console.ReadLine());
  46.  
  47.         numbers = new int[N];
  48.  
  49.         for (int i = 0; i < N; i++)
  50.         {
  51.             Console.Write("numbers[{0}]: ", i);
  52.             numbers[i] = int.Parse(Console.ReadLine());
  53.         }
  54.  
  55.         int[] vector = new int[K];
  56.  
  57.         GenSubsetsOfKElements(K-1, vector, 0);
  58.  
  59.         Console.WriteLine("No such subset found.");
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement