C ++を使用して、指定された数まで加算されるすべての組み合わせを検索します
正の数nがあるとします。正の数のすべての組み合わせを見つける必要があります。これは、その数になります。ここでは、順列ではなく、組み合わせのみが必要です。値n=4の場合、[1、1、1、1]、[1、1、2]、[2、2]、[1、3]、[4]
になります。これは再帰を使用して解決します。組み合わせを格納する配列があり、再帰的アプローチを使用してその配列を埋めます。各組み合わせは、要素の昇順で保存されます。
例
#include<iostream> using namespace std; void getCombination(int arr[], int index, int num, int decrement) { if (decrement < 0) return; if (decrement == 0){ for (int i = 0; i < index; i++) cout << arr[i] << " "; cout << endl; return; } int prev; if(index == 0) prev = 1; else prev = arr[index-1]; for (int k = prev; k <= num ; k++) { arr[index] = k; getCombination(arr, index + 1, num, decrement - k); } } void findCombinations(int n) { int arr[n]; getCombination(arr, 0, n, n); } int main() { int n = 4; findCombinations(n); }
出力
1 1 1 1 1 1 2 1 3 2 2 4
-
C ++を使用して、xとその数字の合計が与えられたnと等しくなるような数xを見つけます。
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i
-
xとその桁の合計がC++で指定されたnと等しくなるような数xを見つけます
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i