在 C++ 中打印所有以 n 开始且连续差限于 k 的序列
本例程给定三个变量 n、s 和 k,我们需要打印从 n 开始、长度为 s、连续元素绝对差小于 k 的所有可能序列。
我们举个例子来更好地理解这个主题 -
Input: n = 3, s = 3 , k = 2 Output: 3 3 3 3 3 4 3 3 2 3 4 4 3 4 5 3 4 3 3 2 2 3 2 3 3 2 1
本例程中,我们需要获得绝对差小于 k。为此,我们可以获得一个序列,其元素大于获得正差,而小于获得负差。
为此,我们将从 n 开始,然后递归调用每个连续位置的元素。从 0 到 k-1 的循环,并将该数字添加到该数字中。同样,也适用于负面。
示例
#include <bits/stdc++.h>
using namespace std;
void printConsicutiveNumbers(vector& v, int n, int s, int k){
if (s == 0) {
for (int i = 0; i < v.size(); i++)
cout<<v[i]<<" ";
cout << endl;
return;
}
for (int i = 0; i < k; i++) {
v.push_back(n + i);
printConsicutiveNumbers(v, n + i, s - 1, k);
v.pop_back();
}
for (int i = 1; i < k; i++) {
v.push_back(n - i);
printConsicutiveNumbers(v, n - i, s - 1, k);
v.pop_back();
}
}
int main(){
int n = 3, s = 3, k = 2;
cout<<"The sequence is :\n";
vector<int> v;
v.push_back(n);
printConsicutiveNumbers(v, n, s - 1, k);
return 0;
}输出
序列为 -
3 3 3 3 3 4 3 3 2 3 4 4 3 4 5 3 4 3 3 2 2 3 2 3 3 2 1
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP