📄 使用循环来求集合的笛卡尔积.txt
字号:
使用循环来求集合的笛卡尔积[原创]
笛卡尔积,在很多领域都有应用。
一、什么是笛卡尔积
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合的情况。
类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。
二、使用循环来求集合的笛卡尔积
我们可以看出来,求笛卡尔积的过程与C中循环的内外层嵌套有很大的相似之处,想到这一点,就好办了。下面的代码中使用数组来表示上面的集合,运行后输出3个集合的笛卡尔积。
#define N 5
void init(int *p)
{
int i;
for(i=0;i<N;i++)
p[i]=i+1;
}
void main()
{
int a[N],b[N],c[N];
int i,j,k,m;
init(a);
init(b);
init(c);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
for(k=0;k<N;k++)
printf("\n%4d,%4d,%4d",a[i],b[j],c[k]);
}
代码很简单,大家也都见过很多次了,只不过是数组元素的输出而已。其实,很多东西看似简单,实际上则蕴含着丰富含义,等待着我们去挖掘。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -