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

nラウンドゲームに勝った人を見つけるためのC++コード


nラウンドの2人ゲームがあるとします。ラウンドのスコアは、各要素が{P1スコア、P2スコア}の形式である配列「スコア」で示されます。スコアの高いプレイヤーがラウンドに勝ち、さらにラウンドに勝った場合はプレイヤーがゲームに勝ちます。それ以外の場合は、引き分けとして宣言されます。したがって、スコアを考慮して、誰がゲームに勝ったかを確認する必要があります。

したがって、入力がn =4、スコア={{4、3}、{3、2}、{5、6}、{2、5}}の場合、出力はDrawになります。

ステップ

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

res := 0
while n is non-zero, do:
   a := first value of scores[n]
   b := second value of scores[n]
   res := res + ((if a > b, then 1, otherwise (if a < b, then -1, otherwise 0)))
   n := n - 1
return (if res > 0, then "P1", otherwise (if res < 0, then "P2", otherwise "Draw"))

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

#include <bits/stdc++.h>
using namespace std;
#define N 100
string solve(int n, vector<pair<int, int>> scores) {
   int res = 0;
   while(n--){
      int a = scores[n].first;
      int b = scores[n].second;
      res += (a > b ? 1 : (a < b ? -1 : 0));
   }
   return res > 0 ? "P1" : (res < 0 ? "P2" : "Draw");
}
int main() {
   int n = 4;
   vector<pair<int, int>> scores = {{4, 3}, {3, 2}, {5, 6}, {2,5}};
   cout<< solve(n, scores);
   return 0;
}

入力

4, {{4, 3}, {3, 2}, {5, 6}, {2, 5}}

出力

Draw

  1. グラフ内のスーパー頂点を見つけるためのC++プログラム

    n個の頂点を持つグラフが与えられたとします。頂点には1からnの番号が付けられ、配列edgesで指定されたエッジによって接続されます。各頂点には、配列valuesで指定された1からnまでの数値内のx値があります。ここで、グラフからスーパー頂点を見つける必要があります。頂点1からiへの最短経路にi番目の頂点と同じ「x」値を持つ頂点がない場合、頂点iは「スーパー頂点」と呼ばれます。この基準を満たすすべての頂点を印刷します。 したがって、入力がn =5のようである場合、値={1、2、2、1、3}、エッジ={{1、2}、{2、3}、{2、3}、{2、4 }、{4、5}}の場合、出力は1 345に

  2. C++のグレイコード

    グレイコードは、2つの連続する値が1ビットだけ異なる2進数システムであることがわかっています。コード内のビットの総数を表す非負の整数nがあるとします。グレイコードのシーケンスを印刷する必要があります。グレイコードシーケンスは0で始まる必要があります。したがって、入力が2の場合、結果は[0,1,3,2]になります。これは、0のグレイが00、1のグレイが01、2のグレイが11、3の灰色は10です。 これを解決するには、次の手順に従います- 1つのアレイを作成します 各数値のグレイコードを見つけて、それらをans配列に追加します。 灰色に変換するには、数値を取得し、数値を1ビット右にシフトした後に