
Javaでモンスターブリーダーのプログラムを作成する方法を教えてください。
1.プログラムの説明(サンプルケース参照)
(1)モンスターの状態(ここではA,B,Cとする)
レベル: 1, 1, 1
固有の値: 2, 3, 1
自分が分け与えられる経験値の合計:10
(2)これらのモンスターのレベルを上げるには、i匹目のモンスターは固有の値aiを持っており、レベルを1増やすのに(モンスターiの現在のレベル)×aiの経験値が必要。
(3)Aのモンスターのレベルを上げるには、レベル(1)× 固有値(2)= 2 の経験値が必要。
→レベル:2、経験値:2
(4)Aのモンスターのレベルを上げるには、レベル(2)×固有値(2)=4 の経験値が必要。
→レベル:3、経験値:2+4=6
(5)Aのモンスターのレベルを上げるには、レベル(3)× 固有値(2)= 6 の経験値が必要。
(6)経験値合計:2+4+6=12
→自分が持っている経験値は10なので、モンスターAをレベル4に上げることはできない。
※他のモンスターに残りの4の経験値を使う場合は・・・という感じになる。
(7)必要な経験値が最も小さくなるものから順次与えていっている
(8)その時点で最も必要な経験値が小さくなるモンスターを探して、そのモンスターに経験値を与えていき、自分の持っている経験値では足りなくなったら終了する。
2.作成方法
① 入力値を元に、各モンスターの固有値、およびレベルを確保するものとして、配列を2つ用意する。
② 固有値は入力する。(配列に入力) →経験値:全て1
③ 使用する経験値の合計が持っている経験値(入力)を超えないように繰り返し処理する。
(永久ループを使って、使用する経験値の合計が持っている経験値を超えたら抜ける。)
④ ループの中では、先のサンプルでみたように、その時点での必要経験値が最も小さくなるモンスターが何番目のモンスターかを探す。(最小値探しと同じ)
⑤ 見つかったら、その番号のモンスターに必要な経験値を手持ちの経験値から引き、そのモンスターのレベルを上げる。
A.必要な経験値が手持ちの経験値の残りでは足りないよう場合
終了でループを抜抜ける。
B.足りている場合
回数をカウントする。
3.入力値
N(モンスターの数)、X(自由に割り振れる経験値)
a_1 ~ a_N (N個の各モンスター固有の値)
4.出力値
モンスターのレベルを上げることのできる最大の回数を出力
5.サンプルケース
<入力値>
3 ,10
2, 3, 1
<出力値>
4
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング初心者です。 Py...
-
cout関数を使っているのですが...
-
scanf関数について
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
4桁の数字以外を入力したらエラ...
-
Userformの入力順序をタブオー...
-
電卓の小数点
-
CRC16コード作成プログラムにつ...
-
Linuxで入力待ちなしkeyread関...
-
Eclipseコンソール表示を、リセ...
-
LuaとWSHについて
-
java初心者です。入力されたの...
-
fflush(stdin)の使い方とprintf...
-
getchar()について 教えてくだ...
-
プログラミングの問題です 「金...
-
2進数の1の数を数える問題
-
EDITコントロールで入力できる...
-
IF文で戻ることはできますか?...
-
コマンドプロンプトからのEOFの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
正負を反転させて出力するプロ...
-
EDITコントロールで入力できる...
-
Excel VBAで、Application.Inpu...
-
4桁の数字以外を入力したらエラ...
-
Eclipseコンソール表示を、リセ...
-
入力値が1以下、かつ数字以外の...
-
コマンドプロンプトからのEOFの...
-
電卓の小数点
-
プログラミングの問題です 「金...
-
scanf が無視されます
-
漢字のソートについて
-
scanfが2回使えない・・・?;
-
C言語について
-
Userformの入力順序をタブオー...
-
WindowsでEOF
-
ワードで文字を入力する時の変...
おすすめ情報