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

C++で許可されている1つのスワップで最大の数


このチュートリアルでは、1回のスワップで最大数を見つけるプログラムを作成します。

問題を解決するための手順を見てみましょう。

  • 番号nを初期化します。
  • 整数を文字列に変換します。
  • 文字列の末尾から繰り返すループを記述します。
    • 最大桁とインデックスを見つけます。
    • 現在の桁が最大桁よりも小さい場合は、開始インデックスを現在のインデックスで更新し、終了インデックスを最大桁インデックスで更新します。
  • 開始インデックスが-1の場合、nを返します。
  • それ以外の場合は、開始インデックスと終了インデックスの数字を入れ替えます。
  • 変換して整数を返します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
int getLargestNumber(int n) {
   int maxDigit = -1;
   int maxDigitIndex = -1;
   int startIndex = -1;
   int endIndex = -1;
   string nInStr = to_string(n);
   for (int i = nInStr.size() - 1; i >= 0; i--) {
      if (nInStr[i] > maxDigit) {
         maxDigit = nInStr[i];
         maxDigitIndex = i;
         continue;
      }
      if (nInStr[i] < maxDigit) {
         startIndex = i;
         endIndex = maxDigitIndex;
      }
   }
   if (startIndex == -1) {
      return n;
   }
   swap(nInStr[startIndex], nInStr[endIndex]);
   return stoi(nInStr);
}
int main() {
   int n = 678;
   cout << getLargestNumber(n) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

876

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++で上部の対角線を下部と交換します

    このチュートリアルは、c ++コードを使用して、3つの対角配列の上の行を下の行に交換するように設計されています。さらに、3対角配列が入力である場合、切望される結果は次のようなものでなければなりません。 このために、アクションのコースは次のようにアルゴリズムで簡単に説明されます; アルゴリズム Step-1: Input a diagonal array Step-2: Pass it to Swap() method Step-3: Traverse the outer loop till 3 Step-4: increment j= i+ 1 in the inner loop t

  2. C++のCHAR_BIT

    CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a = CHAR_BIT*sizeof(x);    stack<bool> s;    cout << "T