C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で指定された値以下のすべてのジャンプ番号を出力します


この問題では、数値nが与えられ、n以下のすべてのジャンプ数値を出力する必要があります。

ジャンプ番号 隣接する桁が1つだけ異なる番号です。一部のジャンプ番号は4565、98、7です。すべての1桁の番号は、ジャンプ番号と見なされます。 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. C++で特定のノードから距離kにあるすべてのノードを出力します

    この問題では、二分木、ターゲットノード、整数Kが与えられます。ターゲットノードから距離Kにあるツリーのすべてのノードを印刷する必要があります。 。 二分木 は、各ノードに最大2つのノード(1つまたは2つ/なし)を持つ特別なツリーです。 問題を理解するために例を見てみましょう K =2 ターゲットノード:9 出力 − 5 1 3. 説明 − 距離は、ノードの上位、下位、または同じレベルで取得できます。したがって、それに応じてノードを返します。 この問題を解決するには、ターゲットノードからK距離離れたノードのタイプを理解する必要があります。 上記の試験から、k個の離

  2. C++の最小ヒープの値x未満のすべてのノードを出力します

    この問題では、最小ヒープが与えられます および値x x未満のすべてのノードを印刷する必要があります。 最小ヒープ は、すべてのノードの値が子ノードのノード値よりも小さい特殊なタイプの二分木です。 問題を理解するために例を見てみましょう- X =45 出力- 2 4 7 10 17 22 33 34 ここで、この問題を解決するには、最小ヒープ全体のプレオーダートラバーサルを実行し、指定された値X未満の値のみを出力する必要があります。ノードの値がxより大きい場合、トラバースは行われません。そこの子ノードの値はxより大きくなります。最小ヒープのプレオーダートラバーサルを実行す