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で質問しましょう!
似たような質問が見つかりました
- 中途・キャリア 営業経験者でも値上げの交渉をしたことがないと戸惑うことはありますか? 中途で採用した営業経験2年〜3 1 2023/07/17 18:26
- 中途・キャリア 営業経験者でも値上げの交渉をしたことがないと戸惑うことはありますか? 中途で採用した営業経験2年〜3 1 2023/07/17 12:35
- 大学受験 大学についてです。 現在BFの大学と偏差値40~52の大学に合格しています。ちなみに40~52の大学 1 2023/02/22 12:56
- Java Java 年数計算 3 2023/01/28 10:52
- 婚活 同世代(40代以上)で結婚歴無い女性って、地雷ですか? 4 2022/10/02 22:46
- 高校受験 中3、受験生です。高校受験についてお聞かせください。 最近、兵庫V模試で偏差値63という結果を出しま 2 2022/09/13 21:36
- Java Java 南京錠 2 2023/02/04 11:46
- 統計学 生物統計学の質問 3 2022/11/11 21:14
- 賃貸マンション・賃貸アパート 家賃設定はまず何を基準,参考にするんですか?信用捨てて驚く様な値上げとか値下げをした,又はされた経験 2 2022/04/04 00:39
- 出会い・合コン 20男です 自分はあまり恋愛経験がないです。 勿論彼女にするなら美女がみんないいと思いますが恋愛経験 6 2022/04/10 10:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
java初心者です。入力されたの...
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
プログラミングの問題です 「金...
-
cout関数を使っているのですが...
-
プログラミング初心者です。 Py...
-
"scanf"でエンターで改行させな...
-
Userformの入力順序をタブオー...
-
scanfが2回使えない・・・?;
-
ワードで文字を入力する時の変...
-
if文の条件にscanf関数を使うと…?
-
入力値が1以下、かつ数字以外の...
-
java 入力された文字列を数値に...
-
プログラム(C)
-
scanf関数について
-
WindowsでEOF
-
2進数の1の数を数える問題
-
Linuxで入力待ちなしkeyread関...
-
プログラムC言語の整数の約数に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報