题目描述
为定长顺序表FixedLenArray实现一个方法int findSubSeq(FixedLenArray& other, FixedLenArray& output),
该方法,在this指针所代表的定长顺序表对象中,查找是否存在一个有序子表X,该子表中的元素全部依次对应other表中的所有元素.
若存在,返回OK,同时output参数中包含:X中每个元素在this表中的索引(從0开始),若不存在,则返回ERROR。
输入
输入包括偶数个行,具体行数不确定。每两行为一个查找单位,其中第一行为this表,第二行为other表
输出
输出索引表,或ERROR
样例输入
8 11 33 44 66 88 99 22 77
3 33 66 99
9 11 22 55 77 33 22 99 66 44
4 11 33 99 44
7 99 77 88 66 22 33 44
2 88 55
样例输出
3 1 3 5
4 0 4 6 8
ERROR
提示
输入的具体行数是不确定的。
#include#includeusing namespace std; class SeqList { private: int *list; int maxsize; int size; public: SeqList(int n, int *p); ~SeqList(); int findSubSeq(SeqList &a,SeqList &b); }; SeqList::SeqList(int n, int *p) { int i; maxsize = 1000; size = n; list = new int[maxsize]; for (i = 0; i <= n; i++) { list[i] = p[i]; } } SeqList::~SeqList() { delete[]list; } int SeqList::findSubSeq(SeqList &a,SeqList &b) { for(int i=0;i<a.size;i++) { int flag1=0; for(int j=0;j<size;j++) { if(a.list[i]==list[j]) { b.list[i]=j; flag1=1; } } if(flag1==0) return 0; } cout<<a.size; for(int k=0;k<b.size;k++) cout<<" "<<b.list[k]; cout<> n) { p = new int[n]; for (i = 0; i> p[i]; } SeqList one(n, p); cin >> m; t = new int[m]; for (i = 0; i> t[i]; } SeqList tow(m, t); SeqList three(m,t); int flag=one.findSubSeq(tow,three); if(flag==0) cout<<"error"<<endl; } return 0; }