这个是一个离散数学里面的关系问题
原理是
设集合M={A,B,C},集合N={X,Y,Z}
M X N读作M叉N
表示的是一个有序偶,也叫笛卡尔积
{(A,X),(A,Y),(A,Z),(B,X),(B,Y),(B,Z),(C,X),(C,Y),(C,Z)}
这样一个集合S
R1 是S具有下面的一种关系的集合
A不和X结婚
他表示的集合就是
{A,Y),(A,Z),(B,X),(B,Y),(B,Z),(C,X),(C,Y),(C,Z)}
R2的关系
C不和X结婚
{(A,X),(A,Y),(A,Z),(B,X),(B,Y),(B,Z),(C,Y),(C,Z)}
R3的关系
C不和Z结婚
{(A,X),(A,Y),(A,Z),(B,X),(B,Y),(B,Z),(C,X),(C,Y)}
由于ABC 只能和一个人结婚
要同时满足3中关系的存在,用数学的表述方法就是
求集合 R1 R2 R3的交集
上面的程序 用1 2 3代表的是 X Y Z
上面的条件表示的就是 这个交集的元素应该满足的关系 ,采用的是条件判定的方法
还有一种实现方法是用数组 a[3] b[3]
a[3]={x,y,z}
b[3] 的下脚标代表 A B C
关系R1 的话
因为 X不和A结婚,所以将X 填入b[2],b[3]中
依此类推的 填入数组b[3]
最后输出 数组中的元素就是 要的答案
前者是计算机对集合的交集的表示方法 用&&的关系表示 法 实现的,这个是最好的算法
我给出的算法 是对 数学解答的一种模拟方法给出的,效率是比不上前者
如果看上面对程序的想法 仍然是不能理解的话,建议阁下 拿起离散数学书 读第一章节的内容
集合 逻辑 关系
另外 感谢3楼的同志 让我有了从计算机的角度重新审视离散数学的灵感。
必须提出的是
楼主 你的头像 好恶心
感谢归感谢,如此通透的讲解 ,分还是必须全部的给我的