问题表述:输出数组的全部子区间。
示例:
输入数组:nums = [1,2,3,4,5];
输出:[ [1],
[2],
[3],
[4],
[5],
[1,2],
[2,3],
[3,4],
[4,5],
[1,2,3],
[2,3,4],
[3,4,5],
[1,2,3,4],
[2,3,4,5],
[1,2,3,4,5] ]
代码实现:
#include <vector>
#include <iostream>
using namespace std;
int main()
{
//输出数组的子区间
vector<int> vec_2;
for (int i = 1; i < 6; ++i)
{
vec_2.push_back(i);
}
for (auto& nums : vec_2)
{
std::cout << nums << " ";
}
std::cout << std::endl;
vector<vector<int>> ans_2; //存储答案
vector<int> ans_mid; //存储中间过程
int cnt = 1; //记录窗口的大小
for (; cnt <= vec_2.size(); ++cnt)
{
for (int i = cnt; i <= vec_2.size(); ++i)
{
for (int j = cnt; j > 0; --j)
{
if (i - j >= 0)
{
ans_mid.emplace_back(vec_2[i - j]);
}
}
ans_2.emplace_back(ans_mid);
ans_mid.clear();
}
}
vector<vector<int>>::iterator ite = ans_2.begin();
for (ite; ite != ans_2.end(); ++ite)
{
for (auto& num : *ite)
{
std::cout << num << " ";
}
std::cout << std::endl;
}
}