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