這裏的問題:https://projecteuler.net/problem=15麻煩與歐拉計劃#15
我拿出我本以爲這對這項工作的模式,我已經看了別人做了什麼,他們已經做了相同的東西,如這裏:http://code.jasonbhill.com/python/project-euler-problem-15/但我總是得到不同的答案。這是我的代碼。
import java.util.*;
public class Problem15 {
public static void main(String[] args) {
ArrayList<Long> list = new ArrayList<Long>();
list.add((long)1);
int size;
for (int x = 1;x<20;x++){
size = list.size();
for(int y = 1;y<size;y++){
long sum = list.get(y-1)+list.get(y);
list.set(y, sum);
}
list.add(list.get(size-1)*2);
System.out.println(list);
}
}
}
編輯: 在回答愛德華,我覺得我的方法是目前你在你的編輯之前說這是不是蠻力,但我只是從每個點求和的可能途徑格。但是,我不需要一個2D數組來做到這一點,因爲我只是從側面看可能的移動。這是我想要解釋我的過程的東西。
因此對於1x1。就像你說的,一旦你達到了一個方向的極限,你只能在另一個方向上行進,所以有兩種方法。這對於1x1來說並不是特別有用,但對於大一點的用戶來說並不是特別有用對於2x2,您知道右上角的右上角只有一條可能的路徑。同樣的邏輯適用於底角。而且,因爲你有一個你已經解決的方塊,一個1x1,你知道中間點有2條路徑。現在,如果你看到兩側,你會發現例如在它下面有2個點,右側有1個點的點具有這些相鄰點中路徑數量的總和,因此那個點必須有3個路徑。對於另一面,給出左上角3和3或2的總和3.
現在,如果你看看我的代碼,那就是它想要做的。索引爲0的元素始終爲1,對於數組的其餘部分,它將前一項和它自身相加,並替換當前項。最後,要找到路徑的總數,它只是最後一個數字的兩倍。因此,如果程序試圖解決4x4的問題,那麼陣列目前看起來像{1,4,10,20}。因此,程序會將它改爲{1,5,10,20},然後{1,5,15,20},然後{1,5,15,35},最後,將路徑的總數{ 1,5,15,35,70}。我認爲這是你在回答中向我解釋的,但我的答案總是出錯。
可能你需要一個2d-ArrayList! – 2014-10-17 04:17:16
它可以用一維數組完成:'QWORD選項卡[40]'... 64位無符號整數結果不適合32位,所以檢查你的數據類型是否不是32位 – Spektre 2014-10-17 07:51:41