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

スコアテーブルから学生のランクを見つけるためのC++コード


サイズnx4の2d配列があるとします。n人の学生がいて、そのIDが0からn-1で始まっているとします。それぞれに英語、地理、数学、歴史の4つのスコアがあります。表では、スコアの合計を減らして生徒を並べ替えています。 2人以上の学生が同じ合計を持っている場合、これらの学生はIDを増やすことによってソートされます。 IDが0の学生のIDを見つける必要があります。

したがって、入力が次のような場合

100 98 100 100
100 100 100 100
90 99 90 100
100 98 60 99

その場合、出力は2になります

ステップ

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

n := size of table
r := 1
p := table[0, 0] + table[0, 1] + table[0, 2] + table[0, 3]
for initialize i := 1, when i < n, update (increase i by 1), do:
   if table[i, 0] + table[i, 1] + table[i, 2] + table[i, 3] > p,
then:
   (increase r by 1)
return r

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

#include <bits/stdc++.h>
using namespace std;
int solve(vector<vector<int>> table){
   int n = table.size();
   int r = 1;
   int p = table[0][0] + table[0][1] + table[0][2] + table[0][3];
   for (int i = 1; i < n; i++){
      if (table[i][0] + table[i][1] + table[i][2] + table[i][3] > p)
         r++;
   }
   return r;
}
int main(){
   vector<vector<int>> table = { { 100, 98, 100, 100 }, { 100, 100, 100, 100 }, { 90, 99, 90, 100 }, { 100, 98, 60, 99 } };
   cout << solve(table) << endl;
}

入力

{ { 100, 98, 100, 100 }, { 100, 100, 100, 100 }, { 90, 99, 90, 100 }, { 100, 98, 60, 99 } }

出力

2

  1. C++で除数から数を見つける

    この問題では、数Numの約数であるN個の整数で構成される配列divisors[]が与えられます。私たちの仕事は、除数から数を見つけることです。 除数配列には1と数値は含まれていません。 問題を理解するために例を見てみましょう 入力 divisors[] = {3, 25, 5, 15} 出力 75 説明 The number 75 has divisors {3, 25, 5, 15} ソリューションアプローチ この問題を解決するには、数の最小と最大の約数を使用して数Numを見つける必要があります。 Num = smallest * largest このためには、配列の除数[]を並べ

  2. C++の除数のリストからAとBを見つけます

    このチュートリアルでは、以下の問題を解決します。 整数の配列が与えられた場合、2つの数値AとBを見つける必要があります。配列内の残りのすべての数値はAとBの約数です。 数値がAとBの両方の約数である場合、その数値は配列に2回存在します。 問題を解決するための手順を見てみましょう。 配列の最大数は、AとBの数の1つです。Aだとしましょう。 これで、Bは2番目に大きい数、またはAの約数ではない数になります。 例 コードを見てみましょう。 #include <bits/stdc++.h> using namespace std; void findTheDivis