用c++写一个程序,要求如下设计一个新的数列类,最多可容纳500个整型元素。除了可以在外部给定数列元素外,可具有查询子数列片段的功能。在主函数中以m a1,a2,a3...am的格式输入m个初始数列(第一个数为数列初始长度,后面m个数分别为m个数列元素),然后读取要查找的子数列,格式同完整数列,n,b1,b2,b3…bn。调用数列的设定方法保存完整数列,调用子数列查找方法返回子数列在完整数列中的起始位置(位置从0开始),如不存在,则返回-1,在主函数中输出查找结果。 【输入形式】 完整数列和需要调用查询的子数列 【输出形式】 查询的结果,如果子数列在完整数列中存在就返回位置信息,如果不存在就返回-1. 【样例输入】
时间: 2024-02-13 18:03:00 浏览: 71
以下是该程序的代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
class NumList
{
private:
vector<int> nums;
public:
void setNums(int length)
{
int num;
for(int i = 0; i < length; i++)
{
cin >> num;
nums.push_back(num);
}
}
int findSubList(int length, vector<int>& subList)
{
for(int i = 0; i < nums.size() - length + 1; i++)
{
bool match = true;
for(int j = 0; j < length; j++)
{
if(nums[i+j] != subList[j])
{
match = false;
break;
}
}
if(match)
{
return i;
}
}
return -1;
}
};
int main()
{
NumList numList;
int length;
cin >> length;
numList.setNums(length);
int subLength;
cin >> subLength;
vector<int> subList;
int num;
for(int i = 0; i < subLength; i++)
{
cin >> num;
subList.push_back(num);
}
int position = numList.findSubList(subLength, subList);
cout << position << endl;
return 0;
}
```
该程序通过定义一个NumList类,实现了保存和查找数列的功能。在主函数中,先输入完整数列,并通过setNums方法保存到NumList对象中,然后输入要查找的子数列,保存到subList向量中。最后调用findSubList方法查找子数列在完整数列中的位置,并输出结果。
阅读全文