足し合わせると y になる x 個の数の組み合わせをすべてリストするにはどうすればよいでしょうか? これらの数値は 0 より大きくなければなりません。
注: 0 は受け入れられません。合計すると y になる x 個の正の数しか追加できません。
#include <string>
#include <iostream>
// Prototype.
bool Function( unsigned int in_x, unsigned int in_y );
int main() {
// Declarations.
unsigned int x = 0;
unsigned int y = 0;
// Ask for x.
std::cout << "\nEnter x:\n";
std::cin >> x;
// Ask for y.
std::cout << "\nEnter y:\n";
std::cin >> y;
// Begin.
Function( x, y );
// Notify and stop.
std::cout << "\nDone!\n";
std::cin.ignore();
::getchar();
// Exit with success.
return 0;
};
bool Function( unsigned int in_x, unsigned int in_y ) {
// Error handler.
if( in_x == 0 ) {
return false; }
// Generate and list...
// *Note: 0 is not accepted. We can only add x amount of positive numbers that adds up to y.
// How do we do it?
return false;
};
入力と出力の例:
例 #1:
Enter x:
3
Enter y:
5
// x | y
0> 3 + 1 + 1 = 5
1> 2 + 2 + 1 = 5
Count = 2
Done!
例 #2:
Enter x:
2
Enter y:
5
// x | y
0> 3 + 2 = 5
1> 4 + 1 = 5
Count = 2
Done!
x は 2 です。つまり、この関数は y になる 2 つの正の数しか生成できず、これは 5 です。