ページ

2012/02/28

[競技プログラミング][C言語][AOJ10015]Finding Missing Cards

AIZU ONLINE JUDGE http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10015

Finding Missing Cards

太郎が花子と一緒にトランプ遊びをしようとしたところ、52枚あるはずのカードが n 枚のカードしか手元にありません。
これらの n 枚のカードを入力として、足りないカードを出力するプログラムを作成して下さい。

太郎が最初に持っていたトランプはジョーカーを除く52枚のカードです。

52枚のカードは、スペード、ハート、クラブ、ダイヤの4つの絵柄に分かれており、各絵柄には13のランクがあります。

Input

最初の行に太郎が持っているカードの枚数 n (n ≤ 52)が与えられます。

続いて n 組のカードがそれぞれ1行に与えられます。各組は1つの空白で区切られた文字と整数です。
文字はカードの絵柄を表し、スペードが'S'、ハートが'H'、クラブが'C'、ダイヤが'D'で表されています。
整数はそのカードのランク(1 ~ 13)を表しています。

Output

足りないカードをそれぞれ1行に出力して下さい。各カードは入力と同様に1つの空白で区切られた文字と整数です。
出力するカードの順番は以下のとおりとします:

  • 絵柄がスペード、ハート、クラブ、ダイヤの順番で優先的に出力する。
  • 絵柄が同じ場合は、ランクが小さい順に出力する。
回答:vol100/AOJ10015.cpp at master from wada811/AOJ - GitHub
マークと数字の二次元配列で真偽値判定のループだ!と思ったら
C言語はデフォルトで boolean を使うことが出来なかったのでビックリでした。
C言語において「≠0 : 真」、「=0 : 偽」なので必要ないのでしょうが、
他の言語で boolean に慣れているとC言語でも使いたくなりますね。
確かに真偽値は入門書とかでも使ったの見たことなかったわーと思って、
何かないかなとググってみたら、C言語にもboolがあった。 - ボクノスを見つけました。
C99から追加された標準Cライブラリの実装 stdbool.hを使えば良いみたいです。
使い方は回答のGitHubのコードを参照してください。

それではまた明日。