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();
}
}
}
