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

C++のカードのデッキにある種類のX


カードのデッキがあり、各カードには整数が書かれているとします。デッキ全体を1つ以上のカードのグループに分割できるように、X> =2を選択できるかどうかを確認する必要があります。この場合、次の条件を満たす必要があります。各グループには正確にX枚のカードがあります。各グループのカードはすべて同じ番号です。

したがって、入力がdeck =[1,2,3,4,4,3,2,1]のようである場合、可能なパーティションは[1,1]、[2,2]であるため、出力はTrueになります。 [3,3]、[4,4]。

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

  • 1つのマップmpを定義する
  • デッキ内のすべてのxに対して
    • (mp [x]を1増やします)
  • mpのすべてのキーと値のペアx
    • ans:=gcd of(ans and value of x)
  • ans> 1の場合はtrueを返し、それ以外の場合はfalseを返します

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool hasGroupsSizeX(vector<int>& deck) {
      unordered_map<int, int> mp;
      int ans;
      for (auto x : deck)
         mp[x]++;
      for (auto x : mp)
         ans = __gcd(ans, x.second);
      return (ans > 1);
   }
};
main(){
   Solution ob;
   vector<int> v = {1,2,3,4,4,3,2,1};
   cout << (ob.hasGroupsSizeX(v));
}

入力

{1,2,3,4,4,3,2,1}

出力

1

  1. LinuxでのC++の最高のIDEは何ですか?

    大きなプロジェクトは、単なるテキストエディタでは管理が困難です。このような場合にIDEを使用すると、生産性が向上し、フラストレーションが軽減される可能性があります。 IDEにはさまざまな種類があり、ニーズに合ったものを選択する必要があります。 Linux上のC++に最適なIDEは1つではありません。ツールは賢く選ぶ必要があります。 Linux用の人気のあるIMOの最高のIDEのリストは次のとおりです。 C /C++開発用のNetbeans- Netbeansは、C /C++および他の多くのプログラミング言語向けの無料のオープンソースで人気のあるクロスプラットフォームIDEです。コミュニテ

  2. カードのデッキをシャッフルするPythonプログラム

    Pythonを使用してトランプのデッキをシャッフルする必要がある場合は、「itertools」および「random」パッケージを使用する必要があります。ランダムライブラリには、データを混同して表示するために使用できる「shuffle」という名前のメソッドがあります。 以下は同じのデモンストレーションです- 例 import itertools, random my_deck = list(itertools.product(range(1,11),['Spade','Heart','Diamond','Club'])) prin