Я работаю над проблемой Project Euler 11: В сетке 20 × 20 ниже четыре цифры по диагональной линии отмечены красным цветом.Чтение из TXT-файла и импорт данных в 2D-arraylist
(я не включил номера просто так мой вопрос легче следовать. Если вы хотите, чтобы обратиться к нему, ссылка https://projecteuler.net/problem=11)
Произведение этих чисел составляет 26 × 63 × 78 × 14 = 1788696.
Что представляет собой наибольшее произведение четырех соседних номеров в одном направлении (вверх, вниз, влево, вправо или по диагонали) в сетке 20 × 20?
Моя проблема заключается в том, что я хочу ввести эти данные в 2D arraylist, но я не уверен, как это сделать. Пока что это мой код. Я знаю, что это может быть не так уж и важно, чтобы решить это, но я все еще участвую, как вы можете ясно сказать, и поэтому на самом деле не заботится о том, чтобы уточнить код и сделать его более простым или коротким на данном этапе. Все, что мне нужно, это знать, как хранить его в качестве 2D-арраиста, тогда я считаю, что я должен идти хорошо.
import java.util.Scanner;
import java.io.File;
import java.util.ArrayList;
@SuppressWarnings("unchecked")
public class main{
public static int row(ArrayList data){
int product=1;//product of any four numbers in sequence across
int max=0;//max product going across
int item;//sets value of data
int y=0;//counts position of data (1-4)
int rownum;//number row
int column;//number column
Object num;//used to extract data from arraylist before converting into int
for(column=0;column<16;column++){
while(y<4){
item=x+y;
num=data.get(item);
product*=(Integer) num;
if (product>max){
max=product;
}
y++;
}
product=1;
y=0;
}
return max;
}
public static void main(String[] args){
File path=new File("../numbers.txt");
int word;//represents number column
int max;//max product of any four numbers in order
int product=1;//max product of each individual way (across, down, diagonal)
int line;//each individual number
ArrayList data=new ArrayList();
try{
Scanner in=new Scanner(path);
while (in.hasNextLine()){
for(word=0;word<16;word++){//goes across a row
line=in.nextInt();
data.add(line);//adds file to arraylist
}
}
}
catch(Exception ex){
}
max=row(data);
System.out.println(max);
}
Спасибо за вашу помощь.