vencinachev

Combinatorics

Sep 9th, 2021 (edited)
455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.16 KB | None | 0 0
  1. using Combinatorics.Collections;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace Combinatorics
  7. {
  8.     class Program
  9.     {
  10.         static void swap(ref int a, ref int b)
  11.         {
  12.             int temp = a;
  13.             a = b;
  14.             b = temp;
  15.         }
  16.         public static void Permutate(int[] arr, int n)
  17.         {
  18.             if (n == arr.Length - 1)
  19.             {
  20.                 Console.WriteLine(string.Join("", arr));
  21.             }
  22.             else
  23.             {
  24.                 for (int i = n; i < arr.Length; i++)
  25.                 {
  26.                     swap(ref arr[n], ref arr[i]);
  27.                     Permutate(arr, n + 1);
  28.                     swap(ref arr[n], ref arr[i]);
  29.                 }
  30.             }
  31.         }
  32.  
  33.         static int Binom(int n, int k)
  34.         {
  35.             if (k == n || k == 0)
  36.             {
  37.                 return 1;
  38.             }
  39.             return Binom(n - 1, k - 1) + Binom(n - 1, k);
  40.         }
  41.  
  42.  
  43.         static void PascalTriangle(int m)
  44.         {
  45.             for (int n = 0; n < m; n++)
  46.             {
  47.                 for (int k = 0; k <= n; k++)
  48.                 {
  49.                     Console.Write(Binom(n, k) + " ");
  50.                 }
  51.                 Console.WriteLine();
  52.             }
  53.         }
  54.         static void Main(string[] args)
  55.         {
  56.             int[] a = { 1, 2, 3 };
  57.             Permutate(a, 0);
  58.  
  59.             char[] inputSet = { 'A', 'B', 'C' };
  60.  
  61.             Permutations<char> perm = new Permutations<char>(inputSet, GenerateOption.WithRepetition);
  62.             foreach (IList<char> l in perm)
  63.             {
  64.                 Console.WriteLine(string.Join("", l));
  65.             }
  66.  
  67.             Variations<char> vari = new Variations<char>(inputSet, 2, GenerateOption.WithRepetition);
  68.             foreach (IList<char> l in vari)
  69.             {
  70.                 Console.WriteLine(string.Join("", l));
  71.             }
  72.  
  73.             Combinations<char> comb = new Combinations<char>(inputSet, 2, GenerateOption.WithRepetition);
  74.             foreach (IList<char> l in comb)
  75.             {
  76.                 Console.WriteLine(string.Join("", l));
  77.             }
  78.  
  79.             Console.Write("Enter numbers: ");
  80.             int[] nums = Console.ReadLine().Split(' ').Select(n => int.Parse(n)).ToArray();
  81.             int[] signs = { 1, -1 };
  82.             bool flag = false;
  83.             Variations<int> s = new Variations<int>(signs, nums.Length, GenerateOption.WithRepetition);
  84.             foreach (IList<int> l in s)
  85.             {
  86.                 int sum = 0;
  87.                 for (int i = 0; i < nums.Length; i++)
  88.                 {
  89.                     sum += l[i] * nums[i];
  90.                 }
  91.                 if (sum == 0)
  92.                 {
  93.                     flag = true;
  94.                     for (int i = 0; i < nums.Length; i++)
  95.                     {
  96.                         Console.Write("{0}{1} ", l[i] == 1 ? '+' : '-', nums[i]);
  97.                     }
  98.                     Console.WriteLine(" = 0");
  99.                 }
  100.             }
  101.             if (!flag)
  102.             {
  103.                 Console.WriteLine("There are no sum 0");
  104.             }
  105.         }
  106.     }
  107. }
  108.  
  109.  
Add Comment
Please, Sign In to add comment