题目:集合A.B.C都是排列有序的递增的集合,设计一个算法..除去集合A里那里既在B中、又在C中出现的元素....?
题目:集合A.B.C都是排列有序的递增的集合,设计一个算法..除去集合A里那里既在B中、又在C中出现的元素....? 问题点数:10、回复次数:5Top
1 楼wh_5(郁闷中~~~~~)回复于 2005-06-01 21:11:27 得分 0
不排除A,B, C中可能会有重复元素Top
2 楼wh_5(郁闷中~~~~~)回复于 2005-06-01 21:15:39 得分 0
题目:集合A.B.C都是排列有序的递增的集合,设计一个算法..除去集合A里那些既在B中、又在C中出现的元素....?
抱歉,打错一个字。改一下:)Top
3 楼Zephyrzzz()回复于 2005-06-01 22:16:30 得分 0
int a=0,b=0,c=0;
while (a<na) {
if (A[a]>B[b] && b<nb) b++;
if (A[a]>C[c] && c<nc) c++;
if (A[a]==B[b] && A[a]==C[c]) 标记A[a]被删除;
a++;
}Top
4 楼Woodman007(卖女孩的小火柴)回复于 2005-06-02 10:06:24 得分 10
楼主说:不排除A,B, C中可能会有重复元素
当有重复元素时怎么处理?
比如:
A={1,2,……}
B={1,1,3,……}
C={1,1,1,4,……}
以下的算法是假设没重复元素时的算法:
int a=0, b=0, c=0;
do
{
while ( A[a] > B[b] && b < Max_b ) b++;
while ( A[a] > C[c] && c < Max_c ) c++;
if ( A[a] == B[b] && A[a]==C[c])
{
//删除 A[a]
if ( b == Max_b || c == Max_c ) break; // B 或 C 已经扫描完
}
a++;
}while( a < Max_a );Top
5 楼jihanzhong(逍遥)回复于 2005-06-02 11:59:35 得分 0
1:求出set D=B and C (D中没有重复数据)
2:A= A-D
3:okTop




