C言語のプログラミングを勉強しています。
参考書の、for文の使い方の章で「1からXまでの数値の中で、特定の数値の数(=今回は1)を計測する」という問題があり組んでみました。
一応、答案通りにはなりましたが、改善案を教えて欲しいと思い投稿しました。
添削をお願いしたいです。
よろしくお願いします。
1からXまでの数値の中で、特定の数値の数を計測する方法
Re: 1からXまでの数値の中で、特定の数値の数を計測する方法
これは、Integer in Integer | Aizu Online Judge
の特殊な場合に近いですね。(定数で割った余りではなく、数そのものを求めるという点が異なりますが)
動的計画法またはメモ化再帰を使い、工夫すると計算量を落とせるでしょう。
この問題の自分の答案
上限・下限値の処理に気をつけながら、クエリの数を探し、見つかったらその後の数のパターン数を求め、加算するという方針です。
の特殊な場合に近いですね。(定数で割った余りではなく、数そのものを求めるという点が異なりますが)
動的計画法またはメモ化再帰を使い、工夫すると計算量を落とせるでしょう。
この問題の自分の答案
上限・下限値の処理に気をつけながら、クエリの数を探し、見つかったらその後の数のパターン数を求め、加算するという方針です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 1からXまでの数値の中で、特定の数値の数を計測する方法
Xが100以上の場合、正しい答えを得ますか?
どうも2桁以内だけに対応しているように見えて仕方がありません。
見間違いかな?
どうも2桁以内だけに対応しているように見えて仕方がありません。
見間違いかな?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 1からXまでの数値の中で、特定の数値の数を計測する方法
99までしか対応していないのは、参考書の入力例には2ケタしかなかったためです。
そう記載すればよかったですが、忘れていました、すみません・・・。
ありがとうございます!
そう記載すればよかったですが、忘れていました、すみません・・・。
ありがとうございます!