C++ 程式選擇一些數字,不存在其和為 k 的子集


假設我們有兩個數字 n 和 k。我們必須從 1 到 n 中選擇最大的不同元素,這樣沒有子集的和等於 k。如果我們可以找到,則返回所選的數字。

因此,如果輸入為 n = 5; k = 3,則輸出為 [4, 5, 2]

步驟

為解決此問題,我們將遵循以下步驟 −

for initialize i := (k + 1) / 2, when i <= k - 1, update (increase i by 1), do:
   print i
for initialize i := k + 1, when i <= n, update (increase i by 1), do:
   print i

示例

讓我們檢視以下實現,以獲得更好的理解 −

#include <bits/stdc++.h>
using namespace std;

void solve(int n, int k) {
   for (int i = (k + 1) / 2; i <= k - 1; i++) {
      cout << i << ", ";
   }
   for (int i = k + 1; i <= n; i++) {
      cout << i << ", ";
   }
}
int main() {
   int n = 5;
   int k = 3;
   solve(n, k);
}

輸入

5, 3

輸出

2, 4, 5,

更新於: 03-Mar-2022

168 瀏覽量

開始你的 職業生涯

透過完成課程獲得認證

開始
廣告