• 判断集合关系(自反,反自反,对称,反对称,传递)


    具体代码如下

      1 #include<iostream>
      2 using namespace std;
      3 
      4 void Input(int a[25][2],int s)
      5 {
      6     int i;
      7     
      8     for (i = 0; i < s; i++)
      9     {
     10         cin >> a[i][0] >> a[i][1];
     11     }
     12 }
     13 
     14 void Output(int a[5][2],int b[5][5], int n,int s)
     15 {
     16     int i;
     17     int j, k;
     18     int buff=0;
     19     int buff1, buff2;
     20     cout << endl<< "the relation is :" << endl;
     21     for (i = 0; i < s; i++)
     22     {
     23         buff1 = a[i][0] - 1;
     24         buff2 = a[i][1] - 1;
     25         b[buff1][buff2] = 1;
     26     }
     27     for (j = 0; j < n; j++)
     28     {
     29         for (k = 0; k < n; k++)
     30         {
     31             cout << b[j][k] << " ";
     32             buff++;
     33             if (buff%n == 0)
     34                 cout << endl;
     35         }
     36     }
     37     cout << endl;
     38 }
     39 void IsReflexive(int b[5][5],int n)
     40 {
     41     int i;
     42     cout << "1、Is Reflexive?" << endl<<endl;
     43     for (i = 0; i < n; i++)
     44     {
     45         if (!b[i][i])
     46         {
     47             cout << "the answer is NO!" << endl;
     48             cout << "At least can't find" << "<" << i + 1 << "," << i + 1 << ">" << endl << endl<<endl;
     49             return;
     50         }
     51     }
     52     cout << "the answer is YES!" << endl<<endl<<endl;
     53 }
     54 void IsAntireflexive(int b[5][5], int n)
     55 {
     56     int i;
     57     cout << "2、Is Antireflexive?" << endl<<endl;
     58     for (i = 0; i < n; i++)
     59     {
     60         if (b[i][i])
     61         {
     62             
     63             cout << "the answer is NO!" << endl;
     64             cout << "At least find" << "<" << i + 1 << "," << i + 1 << ">" << endl<<endl<<endl;
     65             return;
     66         }
     67     }
     68     cout << "the answer is YES!" << endl<<endl<<endl;
     69 }
     70 void IsSymmetric(int b[5][5], int n)
     71 {
     72     int i, j;
     73     cout << "3、Is Symmetric?" << endl << endl;
     74     for (i = 0; i < n; i++)
     75     {
     76         for (j = 0; j < n; j++)
     77         {
     78             if (b[i][j] != b[j][i])
     79             {
     80                 cout << "the answer is NO!" << endl;
     81                 cout << "At least both of" << "<" << i + 1 << "," << j + 1 << ">" << "and" << "<" << j + 1 << "," << i + 1 << ">" << "not appear together" << endl << endl << endl;
     82                 return;
     83             }
     84         }
     85         
     86     }
     87     cout << "the answer is YES!" << endl << endl << endl;
     88 }
     89 void IsAntisymmetry(int b[5][5], int n)
     90 {
     91     int i, j;
     92     cout << "4、Is Antisymmetry?" << endl << endl;
     93     for (i = 0; i < n; i++)
     94     {
     95         for (j = 0; j < n; j++)
     96         {
     97             if (b[i][j] && b[i][j] == b[j][i] && i != j)
     98             {
     99                 cout << "the answer is NO!" << endl;
    100                 cout << "At least both of" << "<" << i + 1 << "," << j + 1 << ">" << "and" << "<" << j + 1 << "," << i + 1 << ">" << "appear together" << endl << endl << endl;
    101                 return;
    102             }
    103         }
    104     }
    105     cout << "the answer is YES!" << endl << endl << endl;
    106 }
    107 void IsTransmit(int b[5][5], int n)
    108 {
    109     int i, j, k;
    110     cout << "5、Is Transmit?" << endl << endl;
    111     for (i = 0; i < n; i++)
    112     {
    113         for (j = 0; j < n; j++)
    114         {
    115             for (k = 0; k < n; k++)
    116             {
    117                 if (b[i][j] && b[j][k]&&!b[i][k])
    118                 {
    119                     
    120                         cout << "the answer is NO!" << endl;
    121                         cout << "At lease can't find" << "<" << i + 1 << "," << k + 1 << ">" << endl << endl << endl;
    122                         return;
    123                     
    124                 }
    125             
    126             }
    127         }
    128     }
    129     cout << "the answer is YES!" << endl << endl << endl;
    130 }
    131 int main()
    132 {
    133     int In[25][2];
    134     int Pu[5][5] = {0};
    135     int n ;
    136 
    137     cout << "input  number of the element(0<=n<=5)" << endl; //输入元素个数
    138     
    139     cin >> n;
    140     for (int l = 0; l < n; l++)
    141     {
    142         cout << l + 1 <<" ";
    143 
    144     }
    145     cout << endl;
    146     while (n < 0||n>5)
    147     {
    148         cout << "error!" << endl;
    149         cin >> n;
    150     }
    151     int s;
    152     cout << "input a number of relation" << endl;//输入序偶个数
    153     cin >> s;
    154     cout << "input the relation" << endl;
    155     Input(In, s);
    156     Output(In,Pu, n,s);
    157     IsReflexive(Pu, n);
    158     IsAntireflexive(Pu,n);
    159     IsSymmetric(Pu, n);
    160     IsAntisymmetry(Pu, n);
    161     IsTransmit(Pu, n);
    162     system("pause");
    163     return 0;
    164 
    165 }
  • 相关阅读:
    Java网络编程
    IDEA maven-3.6.2 Unable to import maven project错误
    Java通过ArrayList的contains(Object o)方法实现去重字符串中的字符
    常用的Unicode值范围
    Java函数(方法)的默认值问题
    [Noip2017]宝藏
    [Noip2017]组合数问题
    [Noip2018]赛道修建
    [Noip2018]旅行(数据加强版)
    [Noip2019]树的重心
  • 原文地址:https://www.cnblogs.com/zlgxzswjy/p/4908390.html
Copyright © 2020-2023  润新知