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

C ++で、N未満のすべての数値を最大2桁の一意の数字で出力します


この問題では、整数Nが与えられ、N未満のすべての数値を、最大2つの一意の数字で出力しました。つまり、最大2つの異なる数字を使用して数値を作成できます。 。

問題を理解するために例を見てみましょう-

Input: N = 17
Output: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

この問題を解決するために、2桁しかないすべての数字を生成します。数値生成プロセスは0から始まり、数値がN以上になると終了します。2つの一意に選択された場合、 num * 10+iとnum*10 + jを使用して再帰的に数値を生成します。 。このプロセスで重複する番号が発生する可能性があります。したがって、 setを使用できます それを避けるために番号を保存します。

このプログラムは、問題を解決するための私たちのアプローチの実装を示しています

#include <bits/stdc++.h>
using namespace std;
set<int> numbers;
void generateNumbers(int n, int num, int i, int j){
   if (num > 0 && num < n)
      numbers.insert(num);
   if (num >= n)
      return;
   if (num*10+i > num)
      generateNumbers(n, num*10+i, i, j);
   generateNumbers(n, num*10+j, i, j);
}
void printUniqueBitNumber(int n){
   for (int i = 0; i <= 9; i++)
      for (int j = i + 1; j <= 9; j++)
         generateNumbers(n, 0, i, j);
   cout<<"The numbers are generated are : ";
   while (!numbers.empty()) {
      cout<<*numbers.begin()<<" ";
      numbers.erase(numbers.begin());
   }
}
int main(){
   int n = 17;
   printUniqueBitNumber(n);
   return 0;
}

出力

The numbers are generated are : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

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

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

  2. C++でn以下のすべての階乗数を検索します

    ここでは、n以下のすべての階乗数を出力する方法を説明します。数値Nは、正の数の階乗である場合、階乗数と呼ばれます。したがって、いくつかの階乗数は1、2、6、24、120です。 階乗数を印刷するために、階乗を直接見つける必要はありません。 i =1から始めて、階乗*iを出力します。最初は階乗は1です。理解を深めるためにコードを見てみましょう。 例 #include <iostream> using namespace std; void getFactorialNumbers(int n) {    int fact = 1;    int