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

コーディングコンテスト後に学生の位置を見つけるためのC++コード


n個の要素を持つ配列Aがあるとします。コーディングコンテストには、合計n人の学生が参加し、開始前に、全員がある程度の肯定的な評価(整数)を持っています。 A[i]はi番目の学生の評価を表します。コンテストが終了した後、すべての学生はいくつかの正の整数の位置になります。私たちは、学生が彼らの評価に従って行われることを期待しています。学生Aの評価が学生Bよりも厳密に低い場合、AはBよりも厳密に高い位置になります。コンテストの最後に位置を見つける必要があります。

したがって、入力がA =[3、5、3、4、5]の場合、2番目と5番目の学生が最高の評価で最初の位置を共有するため、出力は[4、1、4、3、1]になります。学生は3番目の位置で次であり、1番目と3番目の学生は最後の共有4番目の位置です。

ステップ

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

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   d := 1
   for initialize j := 0, when j < n, update (increase j by 1), do:
      if A[j] > A[i], then:
         (increase d by 1)
   cout << d << ", "

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

#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A){
   int n = A.size();
   for (int i = 0; i < n; i++){
      int d = 1;
      for (int j = 0; j < n; j++){
         if (A[j] > A[i])
            d++;
      }
      cout << d << ", ";
   }
}
int main(){
   vector<int> A = { 3, 5, 3, 4, 5 };
   solve(A);
}

入力

{ 3, 5, 3, 4, 5 }

出力

4, 1, 4, 3, 1,

  1. C++でのT秒後のカエルの位置

    n個の頂点で構成される無向ツリーが1つあるとします。頂点には1からnまでの番号が付けられています。これで、カエルは頂点1からジャンプを開始します。カエルは、現在の頂点から、訪問していない別の頂点に隣接している場合、1秒でジャンプできます。カエルは、訪れた頂点に戻ることはできません。カエルが複数の頂点にジャンプできる場合は、そのうちの1つにランダムにジャンプします 確率が同じ場合、それ以外の場合、カエルが訪問していない頂点にジャンプできない場合、同じ頂点で永久にジャンプします。 ツリーはエッジの配列として与えられます。 t秒後にカエルが頂点ターゲットにいる確率を見つける必要があります。 し

  2. C++で与えられた動きの後のロボットの位置

    この問題では、4方向すべてに移動するが、1回だけ移動するロボットが与えられます。方向は上(「U」)、下(「D」)、左(「L」)、右(「R」)です。そして、番号の方向のイニシャルを含む文字列が与えられます。私たちのタスクは、ロボットの初期位置が(0,0)である場合に、ロボットの最終位置を印刷することです。 問題を理解するために例を見てみましょう 入力 −入力:「LDRRUL」 出力 −(0、0) 説明 − L (left) : (0,0) -> (-1,0) D (down) : (-1,0) -> (-1, -1) R (right) : (-1, -1) -> (0