
https://onlinejudge.u-aizu.ac.jp/problems/ITP1_6_B
この問題のアルゴリズムを教えてください。
No.1ベストアンサー
- 回答日時:
ん?これ
https://oshiete.goo.ne.jp/qa/13380583.html
と同じじゃねぇの?
マルチポストはダメだよ。
んで、
> この問題のアルゴリズムを教えてください。
ぶっちゃけ、「アルゴリズム」って程じゃねぇだろ。
言い換えると「どうとでも解ける」。
あっちで掲載した実装例
https://www.ideone.com/W4n9Gd
はこういう考え方だ。
トランプがある。「印字する」か「印字しないか」は2つに1つだ。
つまり二値なわけだな。
二値だからbool値(あるいは真偽値)を利用する。
bool値が真の時印字してbool値が偽の時は印字しない。
そういう状況を最終ゴールにする、って辺りから考えていくんだ。
そういうbool値の「フラグ」をどこに置くか、って考えた時、C言語なら「トランプの構造体自体に仕込めば良い」って判断になる。他の言語ならまた違うけど、C言語だと素の状態じゃあんま自由度がないからそうしてる。
フラグ込みのトランプの構造体を要素とした配列を作る(bool値は「全部印字される」前提でtrueにしておく)。問題に従ってその配列は52の要素がある。
これでほぼ終りだ。
あとは、入力を見て、例えば「S 10」って入力があったらトランプの配列(デッキ)を調べて一致した要素(つまり「S 10」だな)のbool値をfalseに変更する。そうすれば自然と印字用途からは外れるわけ。
あのプログラムの、おそらく一番メンド臭いトコはstring.hのstrtok関数の使い方だろうけど、それは適当なリファレンスを見て。
C言語 strtok 使い方 :
https://bituse.info/c_func/18
単純に言うと、標準入力から例えばS 10と来るとそれは文字列としてbuffer変数に"S 10"として格納される。
それを空白文字を利用して"S"と"10"の2つの文字列に分けるのがstrtokだ(厳密に言うと違うんだけど、他の言語だとそういう考え方になる)。
あとはトランプの配列を舐めて行って、"S"の文字要素である'S'と、文字列"10"からstrtol関数で数値に変換された10と一致してる要素を探してるだけ、だ。
【C言語】strtol関数|strto関数群(strtol, strtoul, strtoq, strtouq)完全解説:
https://marycore.jp/prog/c-lang/stdlib-strtol/
以上。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
プログラミング c言語
C言語・C++・C#
-
C言語でif文が予想と違う動きをする件について7
C言語・C++・C#
-
const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか
C言語・C++・C#
-
-
4
c言語 プログラムのエラー
C言語・C++・C#
-
5
C言語 コマンドプロンプトについて。
C言語・C++・C#
-
6
C言語について。
C言語・C++・C#
-
7
C言語初心者 構造体 課題について
C言語・C++・C#
-
8
悪い、ダメなプログラム
C言語・C++・C#
-
9
visual studio 2019において、宣言していない変数があるのにエラーなくビルド出来ました
C言語・C++・C#
-
10
C言語初心者です、、、お助けください
C言語・C++・C#
-
11
プログラミング 素数か素数ではないか判断するプログラミングで、写真のようなプログラミングを打ったとき
C言語・C++・C#
-
12
良いプログラムの条件
C言語・C++・C#
-
13
stdio.hのバッファについて。
C言語・C++・C#
-
14
C言語初心者 ポインタについて、お助けください、、
C言語・C++・C#
-
15
マクロ関数 #define の効果は何ですか? わかりやすく教えて下さい
C言語・C++・C#
-
16
Cのオブジェクトファイルの逆アセンブル
C言語・C++・C#
-
17
大量のデータを読み込んで表示する速度を改善したい
C言語・C++・C#
-
18
いまc言語の標準ライブラリ文字列を勉強しているのですがいまいちわかりません。 strcmpとmemc
C言語・C++・C#
-
19
c言語の問題の説明、各所ごとに
C言語・C++・C#
-
20
C言語です このプログラムに自分で定義した関数を入れたいです! アドバイスください!
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列のインデックスについて
-
可変長配列を、動的確保した固...
-
ファイル名に日付・時刻を付与...
-
二次元配列における要素数のは...
-
文字の整列(printf)
-
マクロ Publicでの配列定義
-
perl 配列の要素数について
-
VB6で配列の最大値を簡単に求め...
-
複数の配列の全ての組み合わせ...
-
perlfaq4 で紹介されている Fis...
-
エクセルVBAでTransposeの不思議
-
Excel VBA ユーザーフォームの...
-
perlで配列のポインタをdllに渡...
-
Strawberry Perl for Windows ...
-
Dim flag(4) as boolean で配列...
-
プログラミング アルゴリズム
-
重複しない乱数発生
-
VBAのautofilter、criteriaの配...
-
VBでカンマで区切られた、要素...
-
隣同士の数字を足し合わせる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jcode->jfold で禁則処理
-
Dim flag(4) as boolean で配列...
-
二次元配列における要素数のは...
-
チェックボックスのperlでの値...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
Excel VBA ユーザーフォームの...
-
リストボックスに縦スクロール...
-
VBAのautofilter、criteriaの配...
-
VB6で配列の最大値を簡単に求め...
-
エクセルVBAでTransposeの不思議
-
perlfaq4 で紹介されている Fis...
-
マクロ Publicでの配列定義
-
perl 配列の要素数について
-
可変長配列を、動的確保した固...
-
perl 初等プログラミングについて
-
Strawberry Perl for Windows ...
-
プログラミング アルゴリズム
-
バイナリデータの検索(VB.NET2008)
-
perlで配列の要素が空なのを知...
おすすめ情報