求集合的笛卡尔乘积

简介: 求集合的笛卡尔乘积

一:【实验目的】

通过编实现给定集合A和B的笛卡尔积C=AA,D=AB,E=BA,F=AAB,G=A(A*B).

二:【实验内容】

已知所给集合A={1,2},B={a,b,c},求A,B的笛卡尔积C=AA,D=AB,E=BA,F=AAB,G=A(A*B)

三:【实验原理】

笛卡尔乘积是以有序偶为元素的集合,它的定义为C={(x,y)|x∈A,y∈B}。所以欲求笛卡尔积,只需取尽集合A的元素和集合B的元素,并构成序偶(a,b)送入C中即可。

四:代码实现:

#include <stdio.h>
int main()
{
  char A[] = {'1','2'};
  int M = sizeof(A)/sizeof(A[0]);
  char B[] = { 'a','b','c' };
  int N = sizeof(B) / sizeof(B[0]);
  char C[2][2] = { 0 };
  //求C的笛卡尔积,C=A*A
  printf("C=A*A=");
  printf("{");
  int i = 0;
  int j = 0;
  for (i = 0; i < M; i++)
  {
    for (j = 0; j < M; j++)
    {
      C[i][0] = A[i];
      C[i][1] = A[j];
      printf("(%c,%c)", C[i][0], C[i][1]);
    }
  }
  printf("}");
  printf("\n");
  //求D的笛卡尔积,D=A*B
  char D[2][3] = { 0 };
  printf("D=A*B=");
  printf("{");
  for (i = 0; i < M; i++)
  {
    for (j = 0; j < N; j++)
    {
      D[i][0] = A[i];
      D[i][1] = B[j];
      printf("(%c,%c)", D[i][0], D[i][1]);
    }
  }
  printf("}");
  printf("\n");
  //求E的笛卡尔积,E=B*A
  char E[3][2] = { 0 };
  printf("E=B*A=");
  printf("{");
  for (i = 0; i < N; i++)
  {
    for (j = 0; j < M; j++)
    {
      E[i][0] = B[i];
      E[i][1] = A[j];
      printf("(%c,%c)", E[i][0], E[i][1]);
    }
  }
  printf("}");
  printf("\n");
    //求F的笛卡尔积,E=A*A*B
  char F[2][2][3] = { 0 };
  printf("E=A*A*B=");
  printf("{");
  for (i = 0; i < M; i++)
  {
    for (j = 0; j < M; j++)
    {
      for (int k = 0; k < N; k++)
      {
        F[i][j][0] = A[i];
        F[i][j][1] = A[j];
        F[i][j][2] = B[k];
        printf("((%c,%c),%c)", F[i][j][0], F[i][j][1], F[i][j][2]);
      }
    }
    printf("}");
    printf("\n");
  }
      //求G的笛卡尔积,G=A*(A*B)
  char G[2][2][3] = { 0 };      
    printf("G=A*(A*B)=");
    printf("{");
    for (i = 0; i < M; i++)
    {
      for (j = 0; j < M; j++)
      {
        for (int k = 0; k < N; k++)
        {
          G[i][j][0] = A[i];
          G[i][j][1] = A[j];
          G[i][j][2] = B[k];
          printf("(%c,(%c,%c))", G[i][j][0], G[i][j][1], G[i][j][2]);
        }
      }
    }
  printf("}");
  return 0;
}

【实验心得】

通过这个实验,我们可以更深入的了解集合的性质和它们之间的相互作用。在这个实验中,我们将两个集合的元素进行组合,形成了一个新的集合。更深入地了解集合之间的关系,同时这个实验也有助于培养我们的逻辑思维能力和分析问题的能力。

目录
相关文章
|
6月前
82: 求组合数
82: 求组合数
|
机器学习/深度学习
集合论—笛卡尔积与二元关系
集合论—笛卡尔积与二元关系
|
6月前
DAY-4 | 力扣 - 求自身以外数组的乘积:区间划分,左右累乘,巧求乘积
该文档是关于LeetCode上的一道题目“Product of Array Except Self”的题解。提供了两种解题方法,一是暴力破解,即计算所有数的乘积后再逐个除以当前元素;二是左右累乘法,通过两次遍历数组分别计算左侧和右侧元素的乘积,避免了除法操作。其中,左右累乘法更优,代码实现中展示了这种方法。
43 1
|
6月前
|
人工智能
游游的选数乘积
游游的选数乘积
55 3
|
6月前
|
算法 测试技术 C#
【位运算】【 数学】【 哈希映射】2857. 统计距离为 k 的点对
【位运算】【 数学】【 哈希映射】2857. 统计距离为 k 的点对
|
6月前
|
索引
238.除自身以外数组的乘积
238.除自身以外数组的乘积
30 0
|
6月前
|
算法 前端开发
二的幂数组中查询范围内的乘积
二的幂数组中查询范围内的乘积
37 0
|
机器学习/深度学习
数学问题-标量三重积&向量三重积
数学问题-标量三重积&向量三重积
259 0
除自身以外数组的乘积
除自身以外数组的乘积
43 0
|
机器学习/深度学习 Windows
1228 序列求和 (伯努利数)
1228 序列求和 (伯努利数)
91 0