第2关:求笛卡尔积

任务描述
相关知识
笛卡儿积
编程要求
测试说明
任务描述
本关任务:编写一个能计算两个集合笛卡尔积的小程序。

相关知识
笛卡儿积
集合中的元素是无序的,有些情况下我们需要用固定次序的元素来描述对象,如直角坐标的位置<x,y>,当x 


 =y,<x,y>和<y,x>代表两个不同的坐标位置。我们称两个具有固定次序的对象为序偶(有序对),记为<x,y>。

设<x,y>和<u,v>两个序偶,若x=u, 且y=v,则称这两个序偶相等,记为<x,y>=<u,v>。
假设A、B是任意两个集合。令A×B={<x,y>∣x∈A且y∈B} 称集合A×B为A和B的笛卡儿积或直积。

例如:设A={a,b},B={1,2,3},则
A×B={<a,1>,<a,2>,<a,3>,<b,1>,<b,2>,<b,3>}
B×A={<1,a>,<2,a>,<3,a>,<1,b>,<2,b>,<3,b>}
A×A={<a,a>,<a,b>,<b,a>,<b,b>}

输出为:

<a, 1>
<a, 2>
<a, 3>
<a, 4>
<b, 1>
<b, 2>
<b, 3>
<b, 4>
编程要求
根据提示,在右侧编辑器 Begin-End 区间补充代码,练习笛卡儿积。
本例中,集合用一维数组表示,假定集合元素均为整数。

测试说明
平台会对你编写的代码进行测试,只有所有输出都正确才能通过。

开始你的任务吧,祝你成功!

/*
 * dd.c 
 */

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int *A;
	int *B;
	int m,n,i,j;
	
    //输入集合A
	scanf("%d",&m);//集合A元素个数
	A=(int*)malloc(m*sizeof(int));
	for(i=0;i<m;i++)
		scanf("%d",A+i);

    //输入集合B
	scanf("%d",&n);
	B=(int*)malloc(n*sizeof(int));
	for(i=0;i<n;i++)
		scanf("%d",B+i);

    //输出笛卡尔积
    printf("AXB的笛卡尔积:\n");
    /***************begin**************/
	for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("<%d,%d>\n",A[i],B[j]);
        }
    }




    /************end*****************/

	printf("BXA的笛卡尔积:\n");
	/***************begin**************/
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("<%d,%d>\n",B[i],A[j]);
        }
    }
	



    
    /************end*****************/
	free(A);
	free(B);

	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值