恵方巻きの季節が、今年もやって来~る、数学の知識が欲しいと思い続けて、15年、どうも、ボクです。
というわけで、久々に、AIZU ONLINE JUDGEです。
Javaです。そんでは、レッツ~トライ。
実際に試してみる
問題としては、
⇧ という感じです。
やりたいこととしては、入力された数字を表で表現するってことなんですが、
⇧ みたいなイメージです。
では、Eclipseで適当なJavaプロジェクトを作成し、クラスを作成し、
ソースは、こんな感じ、むっちゃ汚い...ドンマイと自分に言い聞かせる。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class TestSpreadSheet { public static void main(String[] args) throws IOException { // TODO 自動生成されたメソッド・スタブ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); // 標準入力の値を、半角スペースで分割 String[] inputRowAndCol = (input.readLine()).split("\\s"); int row = Integer.parseInt(inputRowAndCol[0]); // 行 int col = Integer.parseInt(inputRowAndCol[1]); // 列 // 表 int[][] matrixA = new int[row +1][col +1]; // 縦の合計用 int[] colSum = new int[col +1]; // 横の合計用 int[] rowSum = new int[row +1]; // 入力された、1行の数字を格納する用 String[] number = null; // 表の行数だけ繰り返し for (int i = 0; i < matrixA.length; i++) { // 最終行以外は、入力された行の数字を処理 if (i != matrixA.length -1) { number = (input.readLine()).split("\\s"); } // 表の列数だけ繰り返し for (int j = 0; j < matrixA[i].length -1; j++) { // 最終行以外は、合計していく if (i != matrixA.length -1) { rowSum[i] += Integer.parseInt(number[j]); colSum[j] += Integer.parseInt(number[j]); } // 最終行の行の合計 if (i == matrixA.length -1 && j == matrixA[i].length -2) { for (int m = 0; m < rowSum.length; m++) { matrixA[i][j +1] += rowSum[m]; } // 最終行以外の行の合計 } else if (j == matrixA[i].length -2) { matrixA[i][j +1] = rowSum[i]; } // 列の合計 if (i == matrixA.length -1) { matrixA[i][j] = colSum[j]; // 表に値を入れていく } else { matrixA[i][j] = Integer.parseInt(number[j]); } } } for (int k = 0; k < matrixA.length; k++) { for (int l = 0; l < matrixA[k].length; l++) { System.out.print(matrixA[k][l]); if (l != matrixA[k].length -1) { System.out.print(" "); } } System.out.println(); } } }
実行してみます。
コンソールに、適当な数字を、間に半角スペースを入れて、2つ入力。最初の数字が行数、2つ目の数字が列数。
Enter押してから、入力した列数だけ、間に半角スペースで区切って数字を入力しEnter。行数だけ繰り返し。
という感じで、期待した結果が得られました。
決められたルールで入力しないと、落ちますね...ポンコツなプログラムですな...
まぁ、一応、OKが出たので、良いんですかね...
というわけで、今日もプログラムの技術が上がっていないのであった...
今回はこのへんで。