Advertisement
Tolyamba

clique

Dec 28th, 2016
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.65 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 click2
  8. {
  9.     class Program
  10.     {      
  11.         public static int n;
  12.         public static int[,] g = new int[20, 20];
  13.         public static int[] res = new int[20];
  14.         public static int[] q = new int[20];
  15.         public static int N_res, i_end;
  16.  
  17.         static int ReadIntNumber(string stringForUser, int left, int right)
  18.         {
  19.             bool okInput = false;
  20.             int number = 0;
  21.             do
  22.             {
  23.                 Console.WriteLine(stringForUser);
  24.                 try
  25.                 {
  26.                     string buf = Console.ReadLine();
  27.                     number = Convert.ToInt32(buf); // могут возникнуть исключения FormatException, OverflowException
  28.  
  29.                     if (number >= left && number <= right) okInput = true;
  30.                     else
  31.                     {
  32.                         Console.WriteLine("Некорректное значение! Повторите ввод. ");
  33.                         okInput = false;
  34.                     }
  35.                 }
  36.  
  37.                 catch (FormatException)
  38.                 {
  39.                     Console.WriteLine("Некорректное значение! Повторите ввод. ");
  40.                     okInput = false;
  41.                 }
  42.  
  43.                 catch (OverflowException)
  44.                 {
  45.                     Console.WriteLine("Некорректное значение! Повторите ввод. ");
  46.                     okInput = false;
  47.                 }
  48.  
  49.             } while (!okInput);
  50.             return number;
  51.         }
  52.  
  53.         static void rec(int ii, int N)
  54.         {
  55.             int i, j;
  56.             if (N > N_res)
  57.             {
  58.                 for (i = 0; i < i_end; i++)
  59.                     res[i] = q[i];
  60.                 N_res = N;
  61.             }
  62.  
  63.             if (ii == n)
  64.                 return;
  65.  
  66.             for (i = ii; i < n; i++)
  67.             {
  68.                 for (j = 0; j < i_end; j++)
  69.                     if (g[q[j], i] == 0)
  70.                         break;
  71.  
  72.                 if (j == i_end)
  73.                 {
  74.                     q[i_end++] = i;
  75.                     rec(ii + 1, N + 1);
  76.                     i_end--;
  77.                 }
  78.                 rec(ii + 1, N);
  79.             }
  80.         }
  81.  
  82.         static void Main(string[] args)
  83.         {
  84.             n = ReadIntNumber("Введите количество вершин: ", 1, 20);
  85.  
  86.             for (int i = 0; i < n; i++)
  87.             {
  88.                 for (int j = 0; j < n; j++)
  89.                     g[i, j] = ReadIntNumber("Введите элемент матрицы смежности: ", 0, 1);
  90.             }
  91.  
  92.             for (int i = 0; i < n; i++)
  93.             {
  94.                 for (int j = 0; j < n; j++)
  95.                     if (g[i, j] == 1) g[j, i] = 1;
  96.             }
  97.  
  98.             for (int i = 0; i < n; i++)
  99.             {
  100.                 for (int j = 0; j < n; j++)
  101.                     Console.Write(g[i, j] + " ");
  102.                 Console.WriteLine();
  103.             }
  104.  
  105.             for (int i = 0; i < n; i++)
  106.             {
  107.                 i_end = 0;
  108.                 rec(i, 0);
  109.             }
  110.  
  111.             int count = 0;
  112.             Console.Write("Клика: ");
  113.             for (int i = 0; i < N_res; i++)
  114.             {
  115.                 Console.Write(res[i] + 1 + " ");
  116.                 count++;
  117.             }
  118.             Console.WriteLine();
  119.             Console.WriteLine("Максимальная клика: " + count);
  120.             Console.Read();
  121.         }
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement