我已經完成了創建非常快速的nqueens程序的任務。到目前爲止,Bruteforce算法和Backtrack正在工作,但我發現了一個似乎更快的C程序。現在我試圖將它從C轉換爲Java,但是我無法轉換指針,因爲我不瞭解指針發生了什麼。 這些都是必須轉換線:將C指針轉換爲Java
編輯:我已經更新了轉換到就我的理解:
final int[] aStack = new int[MAX_BOARDSIZE * 2];
int bitfield; //That's what I've got so far
//Conversion 1:
register int* pnStack; -> int pnStack;
//Conversion 2:
pnStack = aStack + 1; -> pnStack = 1;
//Conversion 3:
pnStack = aStack + 1; -> pnStack = 1;
*pnStack++ = 0; -> aStack[pnStack++] = 0;
//Conversion 4:
bitfield = *--pnStack; -> bitfield = aStack[--pnStack];
//Conversion 5:
*pnStack++ = bitfield; -> aStack[pnStack++] = bitfield;
//Conversion 7:
pnStack == aStack -> pnStack == aStack[0] ???????
一種解決方案是不錯,但我會盡量找如果你能解釋我發生了什麼,我自己。指針是我從未真正學過c和C++的原因。
問候, 丹尼斯·菲捨爾
取而代之的指針,使用'int'指數。 – nhahtdh
我已經閱讀過關於這方面的內容,但是我不知道該怎麼做:)。假設pnStack的類型爲int:pnStack = aStack +1;現在在pnStack中保存的結果是什麼? –
不,你想要nIndex = 1來對應pnStack = aStack + 1,當然。 –