前提・実現したいこと
Javaで動的計算法を使い、3つの地域に人を分けて配置し、地域ごとの最適な配置数とその時に利益を表示するプログラムについてです。
3つの地域はそれぞれ
tiiki0 人数0 1 2 3 4 5 6 7
利益3 5 8 9 10 13 15 18
tiiki1 人数0 1 2 3 4 5 6 7
利益2 4 6 8 10 11 12 12
tiiki2 人数0 1 2 3 4 5 6 7
利益4 6 8 11 12 13 13 14
と人数と利益の関係は判明しています。
例としては 総人数が0の場合
tiiki0
人数0 利益3
tiiki1
人数0 利益2+3=5
tiiki2
人数0 利益2+3+4=9
のような具合です。
これは派遣数と利益の関係になります
tiiki0_haken 表
総人数 0 1 2 3 4 5 6 7
利益 3 5 8 9 10 13 15 18
地域0への派遣数0 1 2 3 4 5 6 7
tiiki1_haken 表
総人数 0 1 2 3 4 5 6 7
利益 5 7 10 12 14 16 18 20
地域0への派遣数0 0 0 1 2 3 4 0
tiiki2_haken 表
総人数 0 1 2 3 4 5 6 7
利益 9 11 14 16 18 21 23 25
地域0への派遣数0 0 0 0 0 3 3 3
私が今回表示したいのはtiiki2_haken表です。
表示する形としては
9 11 14 16 18 21 23 25
0 0 0 0 0 3 3 3
のようにしたいです
発生している問題・エラーメッセージ
6 8 10 13 15 17 19 21 0 0 0 3 3 3 3 3 と表示される答えが違う
該当のソースコード
Java
1public class Report1401 { 2public static void main(String[] args) { 3 int[] tiiki0_rieki = {3, 5, 8, 9, 10, 13, 15, 18}; 4 int[] tiiki1_rieki = {2, 4, 6, 8, 10, 11, 12, 12}; 5 int[] tiiki2_rieki = {4, 6, 8, 11, 12, 13, 13, 14}; 6 int[][] tiiki0_haken = new int[2][8]; 7 int[][] tiiki1_haken = new int[2][8]; 8 int[][] tiiki2_haken = new int[2][8]; 9 10 for (int total = 0; total < 8; total++) { 11 tiiki0_haken[0][total] = tiiki0_rieki[total]; 12} 13 for (int total = 0; total < 8; total++) { 14 tiiki0_haken[1][total] = total; 15} 16 for (int total = 0; total < 8; total++) { 17 for (int tiiki1sousu = 0; tiiki1sousu <= total; tiiki1sousu++){ 18 19 int rieki = tiiki1_rieki[tiiki1sousu] + tiiki0_rieki[total - tiiki1sousu]; 20 if (tiiki1_haken[0][total] < rieki) { 21 tiiki1_haken[0][total] = rieki; 22 tiiki1_haken[1][total] = tiiki1sousu; 23 } 24 } 25 } 26 **for(int total = 0; total < 8; total++) { 27 for (int tiiki2sousu = 0; tiiki2sousu <= total; tiiki2sousu++){ 28 29 int rieki = tiiki2_rieki[tiiki2sousu] + tiiki1_rieki[total - tiiki2sousu]; 30 if (tiiki2_haken[0][total] < rieki) { 31 tiiki2_haken[0][total] = rieki; 32 tiiki2_haken[1][total] = tiiki2sousu; 33 } 34 } 35}** 36for (int[] is : tiiki2_haken) { 37for (int i : is) { 38System..print(i + " "); 39} 40System.out.println(); 41} 42} 43}
試したこと
tiiki1_haken 表
5 7 10 12 14 16 18 20
0 0 0 1 2 3 4 0
を表示するプログラムに追記すればよいと言われたので太文字の部分を追加してみましたが上手くいきません
どうか教えていただけないでしょうか
補足情報(FW/ツールのバージョンなど)
手順としては
1.まず地域0のみを考えて、地域0への派遣数に応じた利益を表にまとめる
2.次に地域1と地域0のみを考えて総人数(0~7人)ごとの最大利益とそのときの地域1への派遣数を表にまとめる
3.最後に3つの地域を全て考えて総人数(0~7人)ごとの最大利益とそのときの地域2への派遣数を表にまとめる。
といった形で2まで出来たと思います
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/24 06:17
2019/01/24 06:39