在 C++ 中列印前 n 個自然數中長度為 k 的所有遞增序列
此題中,我們得到了兩個整數 K 和 n。我們的任務是使用前 n 個自然數列印所有長度為 K 的遞增序列。
遞增序列是有序數字序列,其中下一個元素的值大於前一個元素。
我們舉一個例子來理解問題 -
Input: n = 4, K = 2 Output: 1 2 1 3 1 4 2 3 2 4 3 4
要解決此問題,我們將建立一個 k 長度陣列來儲存陣列的當前序列。並且對於陣列中的每一個位置,我們將檢查上一元素並選擇大於上一元素的下一個元素。我們會逐個嘗試將所有值從 1 固定到 n。
示例
程式以說明上述邏輯 -
#include<iostream>
using namespace std;
void printSequence(int arr[], int k) {
for (int i=0; i<k; i++)
cout<<arr[i]<<" ";
cout<<endl;
}
void printKLengthSequence(int n, int k, int &len, int arr[]) {
if (len == k) {
printSequence(arr, k);
return;
}
int i = (len == 0)? 1 : arr[len-1] + 1;
len++;
while (i<=n) {
arr[len-1] = i;
printKLengthSequence(n, k, len, arr);
i++;
}
len--;
}
void generateSequence(int n, int k) {
int arr[k];
int len = 0;
printKLengthSequence(n, k, len, arr);
}
int main() {
int k = 3, n = 4;
cout<<"Sequence of length "<<k<<" generated using first "<<n<<" natural numbers :\n";
generateSequence(n, k);
return 0;
}輸出
A sequence of length 3 generated using first 4 natural numbers − 1 2 3 1 2 4 1 3 4 2 3 4
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP