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

C++での出力コンテストの一致


n個のチームがあり、ランク1のチームをランクnのチームと対戦させるなど、常にかなり強いチームを配置して、かなり弱いチームと対戦するとします。この戦略は、コンテストをより面白くすることです。次に、最終的なコンテストの試合を文字列の形式で見つける必要があります。

これらのチームは、初期ランクを表す1からnまでの正の整数の形式で与えられます。したがって、ランク1が最強のチームであり、ランクnが最弱のチームです。コンテストチームのペアリングを表すために括弧とコンマを使用します。ペアリングには括弧('(‘、')')を使用し、パーティションにはコンマ('、')を使用します。各ラウンドのペアリングプロセスでは、常に、かなり強いペアと弱いペアを作成するという戦略に従う必要があります。

したがって、入力が4のような場合、出力は((1,4)、(2,3))

になります。

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

  • 関数create()を定義します。これには、low、high、配列v2、配列v1、

    が必要です。
  • 低>=高の場合、-

    • 戻る

  • v2の最後に"(" concatenate v1 [low] concatenate "、" concatenate v1 [high] concatenate ")を挿入します

  • create(low + 1、high-1、v2、v1)

  • メインの方法から、次のようにします-

  • アレイv1、v2を定義する

  • 初期化i:=1の場合、i <=nの場合、更新(iを1増やします)、実行-

    • v1の最後にconvertiをstringに挿入

  • v1のサイズが1より大きい場合、実行-

    • create(0、v1、v2、v1のサイズ)

    • v1:=v2

    • v2アレイをクリアする

  • v1の最後の要素を返す

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   void create(int low, int high, vector <string>& v2, vector <string>& v1){
      if (low >= high)
         return;
      v2.push_back("(" + v1[low] + "," + v1[high] + ")");
      create(low + 1, high - 1, v2, v1);
   }
   string findContestMatch(int n) {
      vector v1, v2;
      for (int i = 1; i <= n; i++) {
         v1.push_back(to_string(i));
      }
      while (v1.size() > 1) {
         create(0, v1.size() - 1, v2, v1);
         v1 = v2;
         v2.clear();
      }
      return v1.back();
   }
};
main(){
   Solution ob;
   cout << (ob.findContestMatch(4));
}

入力

4

出力

((1,4),(2,3))

  1. C++ストリームクラスの構造

    C ++では、ストリームとは、プログラムスレッドとi/oの間で転送される文字のストリームを指します。 ストリームクラス C ++では、ファイルおよびioデバイスの入出力操作に使用されます。これらのクラスには特定の機能があり、プログラムの入出力を処理します。 iostream.h ライブラリは、C++プログラミング言語のすべてのストリームクラスを保持します。 階層を見て、それらについて学びましょう。 それでは、 iostreamのクラスについて学びましょう。 ライブラリ。 iosクラス −このクラスは、すべてのストリームクラスの基本クラスです。ストリームは、入力ストリームまた

  2. C++の純粋関数

    純粋関数は、同じ引数値に対して常に同じ結果を返します。結果を返すだけで、引数の変更、I / Oストリーム、出力の生成などの追加の副作用はありません。 いくつかの純粋関数はsin()、strlen()、sqrt()、max()、pow()、floor()などです。いくつかの純粋関数はrand()、time()などです。 純粋関数のいくつかを実証するためのいくつかのプログラムは次のとおりです- strlen() strlen()関数は、文字列の長さを見つけるために使用されます。これは、次のプログラムで示されています- 例 #include<iostream> #include&