集合的运算

简介: 集合的运算

集合的运算

#include <stdio.h>
#include <stdlib.h>
void print(int size, char arr[])
{
  if (size == 0) {
    printf("null");
  }
  for (int i = 0; i < size; i++) {
    printf("%c", arr[i]);
  }
  printf("\n");
}
int main()
{
  char U[] = { 'a','b','c','d','e','f','g','h' };
  char A[] = { 'a','b','c','g' };
  char B[] = { 'd','e','f','g' };
  char C[] = { 'a','c','f' };
  char D[] = { 'f','h' };
  int M = sizeof(A) / sizeof(A[0]);//计算A集合的大小
  int N = sizeof(B) / sizeof(B[0]);//计算B集合的大小
  int P = sizeof(C) / sizeof(C[0]);//计算C集合的大小
  int Q = sizeof(D) / sizeof(D[0]);//计算D集合的大小
  int R = sizeof(U) / sizeof(U[0]);//计算U集合的大小
  char E[100] = { '0' };
  char F[100] = { '0' };
  char G[100] = { '0' };
  char H[100] = { '0' };
  char I[100] = { '0' };
  char J[100] = { '0' };
  char K[100] = { '0' };
  char L[100] = { '0' };
  int size = 0;//标记结果集合的大小
  for (int i = 0; i < M; i++) {
    for (int j = 0; j < N; j++) {
      if (A[i] == B[j]) {
        E[size] = A[i];
        size++;
        break;
      }
    }
  }
  printf("A∩B    :");
  print(size, E);
  int Size = 0;
  for (int i = 0; i < size; i++) {
    int find = 0;
    for (int j = 0; j < P; j++) {
      if (E[i] == C[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      K[Size] = E[i];
      Size++;
    }
  }
  printf("(A∩B)-C:");
  print(Size, K);
  size = 0;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < P; j++) {
      for (int k = 0; k < Q; k++) {
        if ((B[i] == C[j]) && (C[j] == D[k]))
        {
          G[size] = B[i];
          size++;
        }
      }
    }
  }
  printf("B∩C∩D  :");
  print(size, G);
  size = 0;
  for (int i = 0; i < N; i++) {
    F[size] = B[i];
    size++;
  }
  for (int i = 0; i < P; i++) {
    int find = 0;
    for (int j = 0; j < N; j++) {
      if (C[i] == B[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      F[size] = C[i];
      size++;
    }
  }
  printf("B∪C    :");
  print(size, F);
  Size = 0;
  for (int i = 0; i < M; i++) {
    for (int j = 0; j < size; j++) {
      if (A[i] == F[j]) {
        J[Size] = A[i];
        Size++;
      }
    }
  }
  printf("A∩(B∪C):");
  print(Size, J);
  Size = 0;
  for (int i = 0; i < size; i++) {
    L[Size] = F[i];
    Size++;
  }
  for (int i = 0; i < M; i++) {
    int find = 0;
    for (int j = 0; j < size; j++) {
      if (A[i] == F[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      L[Size] = A[i];
      Size++;
    }
  }
  printf("A∪B∪C  :");
  print(Size, L);
  size = 0;
  for (int i = 0; i < R; i++) {
    int find = 1;
    for (int j = 0; j < M; j++) {
      if (U[i] == A[j]) {
        find = 0;
        break;
      }
    }
    if (find == 1) {
      H[size] = U[i];
      size++;
    }
  }
  printf("A的补集:");
  print(size, H);
  size = 0;
  for (int i = 0; i < P; i++) {
    int find = 0;
    for (int j = 0; j < Q; j++) {
      if (C[i] == D[j]) {
        find = 1;
        break;
      }
    }
    if (find == 0) {
      I[size] = C[i];
      size++;
    }
  }
  printf("C-D    :");
  print(size, I);
  Size = 0;
  return 0;
}


目录
相关文章
|
3月前
|
开发者
除了交集运算,Set 类型还可以用于哪些数据结构的操作?
【10月更文挑战第30天】`Set`类型在数据结构操作方面提供了丰富的功能和便利,能够帮助开发者更高效地处理各种数据集合相关的任务,提高代码的简洁性和性能。
|
3月前
|
算法 JavaScript 前端开发
使用 Set 类型实现数组的交集运算
【10月更文挑战第30天】使用 `Set` 类型实现数组的交集运算是一种常见且有效的方法,它为我们处理数据集合的运算提供了一种便捷的途径。通过合理地运用这种方法,我们可以轻松地实现数组的交集计算,并在各种编程任务中灵活运用。
|
9月前
|
Python
数组运算
【5月更文挑战第6天】数组运算。
55 1
|
9月前
|
算法 测试技术 C++
【位运算 反证法 试填法】2897.对数组执行操作使平方和最大
【位运算 反证法 试填法】2897.对数组执行操作使平方和最大
|
8月前
|
存储 算法
数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)
数据结构学习记录——集合及运算(集合的表示、并查集、树结构表示集合、集合运算、查找函数、并运算)
57 0
|
9月前
|
存储 数据处理 Python
NumPy数组运算:元素级与广播机制剖析
【4月更文挑战第17天】NumPy是Python数值计算库,提供元素级运算和广播机制。元素级运算针对数组每个元素单独计算,如加法、减法等;广播机制允许不同形状数组间运算,通过扩展小数组形状匹配大数组。了解这两点能帮助更好地运用NumPy进行数值计算和数据处理。
|
9月前
|
算法 前端开发
数组归约运算
数组归约运算
55 0
第3章 数组与矩阵——3.1 数组运算(2)
第3章 数组与矩阵——3.1 数组运算(2)
第3章 数组与矩阵——3.1 数组运算(1)
第3章 数组与矩阵——3.1 数组运算(1)

热门文章

最新文章