画图可知 6)中函数所求的集合为 3个互相相交的圆的不相交部分的并.
简证:设这三个圆为ABC 先求AoB 将其涂上阴影,然后将阴影部分整体作为X 做XoC 可得
AoBoC = 三个圆不相交部分的并集.
因此 所求即为由容斥原理: AUBUC-(A∩B+A∩C+B∩C)+A∩B∩C
题目中所述的"函数内部分别调用上述 求并 求交函数",意思就是这些个函数已经是有的了.那么
void symmetric_diffrence(int *A, int *B, int *C, int a, int b, int c) {
int * result; // 结果的指针 int size = 0; // 结果大小
result = GetSum(int *A, int *B, int *C, int a, int b, int c , int size) - GetReduce(int *A, int *B, int a, int b, int size) - GetReduce(int *A, int *C, int a, int c, int size) - GetReduce(int *B, int *C, int b, int c, int size) +GetReduce(int *A, int *B, int *C, int a, int b, int c, int size)
// print ---result size---- 输出对称差运算的结果
return;
}
其中 GetReduce是求交集运算 GetSum是求并集运算,此处需要重载GetReduce函数(如果你用的是C++或java) 以满足对不同入参的匹配.
以上.