在C ++中打印所有小于或等于给定值的跳跃数
在这个问题中,给我们一个数字n,我们必须打印所有小于或等于n的跳跃数字。
跳数是相邻数字仅相差一个的数字。一些跳跃数字是4565、98、7。所有一位数字都被视为跳跃数字。235不是跳数。
现在,让我们以一个例子来理解问题
Input: N = 32 Output: 0 1 2 3 4 5 6 7 8 9 10 12 21 23 32
为了解决这个问题,我们将假设一个图,其中0是起始节点,并将其遍历到所有可达节点。您可以使用BFS或DFS遍历它。此图是使用使值跳跃数字的条件创建的。
示例
以下代码实现了我们的解决方案-
#include <bits/stdc++.h>
using namespace std;
void traverse(int N, int num) {
queue<int> q;
q.push(num);
while (!q.empty()) {
num = q.front();
q.pop();
if (num <= N) {
cout << num << " ";
int last_dig = num % 10;
if (last_dig == 0)
q.push((num * 10) + (last_dig + 1));
else if (last_dig == 9)
q.push((num * 10) + (last_dig - 1));
else {
q.push((num * 10) + (last_dig - 1));
q.push((num * 10) + (last_dig + 1));
}
}
}
}
void printJumpingNumber(int N) {
cout<<0<<" ";
for (int i = 1; i <= 9 && i <= N; i++)
traverse(N, i);
}
int main() {
int N = 54;
cout<<"Jumping Numbers less than "<<N<<" are :\n";
printJumpingNumber(N);
return 0;
}输出结果
Jumping Numbers less than 54 are − 0 1 10 12 2 21 23 3 32 34 4 43 45 5 54 6 7 8 9
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练