Csak akkor olvass tovább, ha a Átlók feladatot megoldottad, vagy nem sikerült megoldani.
Az alap feladatot a fenti linken megtalálod. A megoldást úgy adom meg, hogy egy meret nevű változóba meg lehet adni a négyzet méretét, amelyben meg kell keresni a legnagyobb összegű átlót.
/** * * @author http://webotlet.hu */ package webotlet_atlok; public class Webotlet_Atlok { public static void main(String[] args) { // a matrix meretenek megadasa int meret = 10; int[][] matrix = new int[meret][meret]; // a matrix feltoltese es kiiratasa for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { matrix[i][j] = (int) (Math.random() * 100); } } kiir(matrix); // itt tarolom majd a maximum osszegu atlo kezdopontjanak // koordinatait, es az osszeget { x, y, osszeg } int[] max = new int[3]; int osszeg = 0; // azokat az atlokat vizsgalom, ahol a kezdopont // az elso sorban van for (int j = 0; j < matrix[0].length; j++) { int i = 0; // a k valtozoban tarolom, hogy hany mezovel haladtam dk-i iranyba int k = 0; osszeg = 0; System.out.print("Atlo kezdopont: " + i + "," + j); do { osszeg += matrix[i + k][j + k]; k++; } while (i + k < meret && j + k < meret); System.out.println(" osszeg: " + osszeg); if (osszeg > max[2]) { max[0] = i; max[1] = j; max[2] = osszeg; } } // azokat az atlokat vizsgalom, ahol a kezdopont // az elso oszlopban van // (a 0,0 koordinataju atlot nem szamolom ki megegyszer) for (int i = 1; i < matrix.length; i++) { int j = 0; // a k valtozoban tarolom, hogy hany mezovel haladtam dk-i iranyba int k = 0; osszeg = 0; System.out.print("Atlo kezdopont: " + i + "," + j); do { osszeg += matrix[i + k][j + k]; k++; } while (i + k < meret && j + k < meret); System.out.println(" osszeg: " + osszeg); if (osszeg > max[2]) { max[0] = i; max[1] = j; max[2] = osszeg; } } System.out.println("max: " + max[2] + " helye: " + max[0] + "," + max[1]); } public static void kiir(int[][] tomb) { for (int i = 0; i < tomb.length; i++) { for (int j = 0; j < tomb[i].length; j++) { System.out.print(String.format("%3d", tomb[i][j])); } System.out.println(); } } }