Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 n으로 시작하고 연속 차이가 k로 제한되는 모든 시퀀스를 인쇄합니다.


이 문제에서 3개의 변수 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