在 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP