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

C++での相対ランク


N人のアスリートのスコアのリストがあるとすると、それらの相対的なランクと、「ゴールド」、「シルバー」、「ブロンズ」の異なるメダルとなる上位3つの最高スコアを持つ人々を見つける必要があります。

したがって、入力が[2,5,3,1,0]の場合、出力は[Bronze、Gold、Silver、4,5]

になります。

これを解決するには、次の手順に従います-

  • numsのサイズが1と同じ場合、-

    • 「ゴールド」を返す

  • numsのサイズが2と同じ場合、-

    • nums [0]> nums [1]の場合、-

      • 「ゴールド」、「シルバー」を返す

    • それ以外の場合

      • 「シルバー」、「ゴールド」を返す

  • 配列を定義するv

  • D配列vecを定義する

  • 初期化i:=0の場合、i

    • vの最後にnums[i]を挿入します

  • 配列を並べ替えるv

  • 配列を逆にするv

  • 1つのマップmpを定義する

  • numsのサイズが2より大きい場合、-

    • {v [0]、"Gold"}をmpに挿入

    • {v [1]、"Silver"}をmpに挿入

    • {v [2]、"ブロンズ"}をmpに挿入

    • 初期化i:=3の場合、i

      • {v [i]、i + 1asstring}をmpに挿入

    • 初期化i:=0の場合、i

      • vecの最後にmp[nums[i]]を挿入します

  • vecを返す

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<string> findRelativeRanks(vector<int>& nums){
      if (nums.size() == 1){
         return { "Gold" };
      }
      if (nums.size() == 2){
         if (nums[0] > nums[1])
            return { "Gold", "Silver" };
         else
            return { "Silver", "Gold" };
      }
      vector<int> v;
      vector<string> vec;
      for (int i = 0; i < nums.size(); i++)
         v.push_back(nums[i]);
      sort(v.begin(), v.end());
      reverse(v.begin(), v.end());
      map<int, string> mp;
      if (nums.size() > 2) {
         mp.insert({v[0], "Gold" });
         mp.insert({v[1], "Silver" });
         mp.insert({v[2], "Bronze" });
         for (int i = 3; i < v.size(); i++) {
            mp.insert({ v[i], to_string(i + 1) });
         }
         for (int i = 0; i < nums.size(); i++)
            vec.push_back(mp[nums[i]]);
      }
      return vec;
   }
};
main(){
   Solution ob;
   vector<int> v = {2,5,3,1,0};
   print_vector(ob.findRelativeRanks(v));
}

入力

{2,5,3,1,0}

出力

[Bronze, Gold, Silver, 4, 5, ]

  1. C++での質素な数

    この問題では、正の整数Nが与えられます。私たちのタスクは、与えられた数が質素な数であるかどうかをチェックするプログラムを作成することです。 不正な番号 −指定された数の素因数分解の桁数よりも厳密に桁数が多い数。 例 − 625、数625の素因数は5 4です。 。 625の桁数は3です。 5 4の桁数 は2です。 3は厳密に2より大きくなります。したがって、625は質素な数です。 最初のいくつかの質素な数は − 125、128、243、256、343、512、625など。 問題を理解するために例を見てみましょう Input: n = 128 Output: Frugal n

  2. C++五胞体数

    五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと