打印所有位数等于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 寿宴祝福语蛋糕文案简短