打印所有位数等于C中给定总和的n位数字
在这个问题上,我们给了两个数字n和sum。我们必须打印总和等于总和的所有n位数字。在此问题中,不考虑前导0的数字。
让我们举个例子来了解这个问题,
Input: n = 2 , sum = 5 Output: 14 23 32 41 50 Explanation: The sum of digits of the number in all numbers in 5.
为了解决这个问题,我们将必须找到所有具有给定总和值的总和的n位数字。为此,我们将固定一个具有所有值的数字位置,并根据其位置是偶数还是奇数,在数字的其他位置处调用值,以保持条件满足。
示例
实施上述解决方案的程序-
#include <iostream>
using namespace std;
void PrintNumberWithDigitSum(int n, int sum, char* out, int index) {
if (index > n || sum < 0)
return;
if (index == n) {
if(sum == 0) {
out[index] = ' ';
cout << out << " ";
}
return;
}
for (int i = 0; i <= 9; i++) {
out[index] = i + '0';
PrintNumberWithDigitSum(n, sum - i, out, index + 1);
}
}
void numberWithSum(int n, int sum) {
char out[n + 1];
for (int i = 1; i <= 9; i++) {
out[0] = i + '0';
PrintNumberWithDigitSum(n, sum - i, out, 1);
}
}
int main() {
int n = 3, sum = 6;
cout<<"All "<<n<<" digit numbers with sum "<<sum<<" are :\n";
numberWithSum(n, sum);
return 0;
}输出结果
All 3 digit numbers with sum 6 are − 105 114 123 132 141 150 204 213 222 231 240 303 312 321 330 402 411 420 501 510 600
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短