我已经完成了创建非常快速的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,当然。 –