Advertisement
Arden

Nevermind

Jan 16th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.64 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. using Codes_Maker;
  7.  
  8. namespace ConsoleApplication1
  9. {
  10.     class Program
  11.     {
  12.         static void Sochetaniya(int n, int r, out string[] ArrayOfWords)
  13.         {
  14.             int[] x = new int[10000];
  15.             int[] min = new int[10000];
  16.             int[] max = new int[10000];
  17.             int i, j, p, d = 0;
  18.             string s = "";
  19.             ArrayOfWords = new string[1000000];
  20.             for (j = 1; j < r + 1; j++)
  21.             {
  22.                 max[j] = n - j + 1;
  23.                 min[j] = r - j + 1;
  24.                 x[j] = min[j];
  25.             }
  26.             i = 0; p = 0;
  27.             while (i <= r)
  28.             {
  29.                 for (j = r; j > 0; j--)
  30.                 {
  31.                     s = s + Convert.ToString(x[j]);
  32.                 }
  33.                 ArrayOfWords[d] = s;
  34.                 p++; i = 1;
  35.                 while ((i <= r) && (x[i] == max[i]))
  36.                 {
  37.                     i++;
  38.                 }
  39.                 if (i <= r) x[i]++;
  40.                 for (j = i - 1; j >= 0; j--)
  41.                 {
  42.                     min[j] = x[j + 1] + 1;
  43.                     x[j] = min[j];
  44.                 }
  45.                 s = "";
  46.                 d++;
  47.             }
  48.         }
  49.  
  50.         static public void BornCode(int n, int r, int p, string[] ArrayOfWords, out int[,] Matrix, out int[] Weights)
  51.         {
  52.             Func<int, int> f = null;
  53.             f = x => x > 1 ? x * f(x - 1) : 1;
  54.             Matrix = new int[n - 1, f(n) / f(n - r)];
  55.             int flag1 = 0, flag2 = 0;
  56.             int dlyaL = (f(n) / (f(n - r) * f(r)));
  57.             Weights = new int[n - 1];
  58.             for (int i = 1; i <= n - 1; i++)
  59.             {
  60.                 for (int l = 0; l <= dlyaL - 1; l++)
  61.                 {
  62.                     //charArray = ArrayOfWords[l].ToCharArray(l - 1, r);
  63.                     for (int j = 0; j <= r - 1; j++)
  64.                     {
  65.                         if (Convert.ToByte(ArrayOfWords[l][j] - 48) == i) flag1 = 1;
  66.                         if (Convert.ToByte(ArrayOfWords[l][j] - 48) == i + 1) flag2 = 1;
  67.                     }
  68.                     if (flag1 == flag2)
  69.                     {
  70.                         Matrix[i - 1, l] = 0; Console.Write(Matrix[i - 1, l]);
  71.                     }
  72.                     if (flag1 > flag2)
  73.                     {
  74.                         Matrix[i - 1, l] = 1; Console.Write(Matrix[i - 1, l]); Weights[i - 1]++;
  75.                     }
  76.                     if (flag1 < flag2)
  77.                     {
  78.                         Matrix[i - 1, l] = FiniteFieldsMath.inverse(-1, p); Console.Write(Matrix[i - 1, l]); Weights[i - 1]++;
  79.                     }
  80.                     flag1 = 0;
  81.                     flag2 = 0;
  82.                 }
  83.                 Console.WriteLine();
  84.             }
  85.         }
  86.         static void Main(string[] args)
  87.         {
  88.             Func<int, int> f = null;
  89.             f = x => x > 1 ? x * f(x - 1) : 1;
  90.             int n = 0, r = 0, p = 0;
  91.             n = Convert.ToInt32(Console.ReadLine());
  92.             r = Convert.ToInt32(Console.ReadLine());
  93.             p = Convert.ToInt32(Console.ReadLine());
  94.             int[,] Matrix = new int[n - 1, (f(n) / (f(n - r))) + 10];
  95.             int[] Weights = new int[n - 1];
  96.             string[] ArrayOfWords = new string[1000000];
  97.             Sochetaniya(n, r, out ArrayOfWords);
  98.             BornCode(n, r, p, ArrayOfWords, out Matrix, out Weights);
  99.             var min = Weights.Min();
  100.             Console.WriteLine("d(C) = {0}", min);
  101.             Console.ReadKey();
  102.         }
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement