
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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
プログラミング 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
visual studio 2019において、宣言していない変数があるのにエラーなくビルド出来ました
C言語・C++・C#
-
8
C言語初心者 構造体 課題について
C言語・C++・C#
-
9
悪い、ダメなプログラム
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#
-
17
Cのオブジェクトファイルの逆アセンブル
C言語・C++・C#
-
18
いまc言語の標準ライブラリ文字列を勉強しているのですがいまいちわかりません。 strcmpとmemc
C言語・C++・C#
-
19
c言語の問題の説明、各所ごとに
C言語・C++・C#
-
20
Javaって使いますか、もう古いですか?C++とどっちがいいですか?分析でC++使う授業ありましたけ
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
for文とforeach文について
-
python の素朴な疑問
-
ハッシュリストって単にハッシ...
-
select case について
-
UWSCの終了の仕方
-
流れ図(フローチャート)が分か...
-
GIFアニメをループさせたくない
-
UWSCに制限時間を付けたいです
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
動く文字<MARQUEE>
-
perlのデータ構造? デバッグ...
-
Perl実行時のメモリ不足について
-
VBA for i=1 to lastrow
-
ループを回すという意味は何で...
-
範囲指定したセルを1つずつ飛...
-
vbscriptでIE自動入力(途中で...
-
WHILE (CHKIMG(”A.bmp”)=FALSE)...
-
エクセルの当番表を作っていま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jcode->jfold で禁則処理
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
二次元配列における要素数のは...
-
マクロ Publicでの配列定義
-
クラスに配列を渡す方法
-
VBAのautofilter、criteriaの配...
-
ファイル名に日付・時刻を付与...
-
Dim flag(4) as boolean で配列...
-
Excel VBA ユーザーフォームの...
-
VBでカンマで区切られた、要素...
-
エクセルVBAでTransposeの不思議
-
文字の整列(printf)
-
チェックボックスのperlでの値...
-
組み合わせについての質問です...
-
perlで配列の要素が空なのを知...
-
隣同士の数字を足し合わせる
-
VB6で配列の最大値を簡単に求め...
-
VBA 二次元配列の1つ目を増...
-
可変長配列を、動的確保した固...
おすすめ情報