Java 网格中最大的产品

Java 网格中最大的产品,java,algorithm,math,logic,Java,Algorithm,Math,Logic,我被这个问题困住了。我确实认为我有正确的解决方案,但当提交到网站时,它不接受 我试着通过打印所有可能的组合来调试它,它们都完成了(水平、垂直和对角)。数组也已正确填充。我检查后打印出来 你知道问题出在哪里吗 问题: 同一时间内四个相邻数字的最大乘积是什么 20×20网格中的方向(上、下、左、右或对角) 代码 您只检查一条对角线,还需要检查另一条: if(j > 2 && i < 17) { tmp = in[i][j] * in[i+1][j-1] * in

我被这个问题困住了。我确实认为我有正确的解决方案,但当提交到网站时,它不接受

我试着通过打印所有可能的组合来调试它,它们都完成了(水平、垂直和对角)。数组也已正确填充。我检查后打印出来

你知道问题出在哪里吗

问题: 同一时间内四个相邻数字的最大乘积是什么 20×20网格中的方向(上、下、左、右或对角)

代码
您只检查一条对角线,还需要检查另一条:

if(j > 2 && i < 17) {
    tmp = in[i][j] * in[i+1][j-1] * in[i+2][j-2] * in[i+3][j-3];
    if (tmp > max) max = tmp;
}
if(j>2&&i<17){
tmp=in[i][j]*in[i+1][j-1]*in[i+2][j-2]*in[i+3][j-3];
如果(tmp>max)max=tmp;
}

您只检查一条对角线,即右下方向的对角线

向右转:

if (i < 17 && j > 2){
    tmp = in[i][j] * in[i+1][j-1] * in[i+2][j-2] * in[i+3][j-3];
    if (tmp > max) max = tmp;
}
if(i<17&&j>2){
tmp=in[i][j]*in[i+1][j-1]*in[i+2][j-2]*in[i+3][j-3];
如果(tmp>max)max=tmp;
}

听起来像是欧拉计划的问题11。@Tunaki就是这样。我不明白我为什么要这样做。编辑:我添加了源链接。你怎么知道?什么是正确答案?@sharonbn我不知道正确答案。我必须提交,他们要么接受要么拒绝。我想这是因为你只检查一个方向的对角线,即右下角。您不必检查对角线是否向上。非常感谢。正确答案:)。谢谢。别担心,实际上你是第一个回答的,所以没关系。
if(j > 2 && i < 17) {
    tmp = in[i][j] * in[i+1][j-1] * in[i+2][j-2] * in[i+3][j-3];
    if (tmp > max) max = tmp;
}
if (i < 17 && j > 2){
    tmp = in[i][j] * in[i+1][j-1] * in[i+2][j-2] * in[i+3][j-3];
    if (tmp > max) max = tmp;
}