난 그냥 자바 (오늘) 배우기 시작하는 데 도움이,파이썬에서 자바 8 왕비 문제를 번역 : 필요
날 행사하기 위해, 나는 자바에 파이썬으로 작성된 다음 "8 퀸즈"알고리즘을 번역하고 싶습니다 :
BOARD_SIZE = 8
def under_attack(col, queens):
left = right = col
for r, c in reversed(queens):
left, right = left-1, right+1
if c in (left, col, right):
return True
return False
def solve(n):
if n == 0: return [[]]
print n
smaller_solutions = solve(n-1)
return [solution+[(n,i+1)] for i in range(BOARD_SIZE) for solution in smaller_solutions if not under_attack(i+1, solution)]
sols = solve(BOARD_SIZE)
for answer in sols:
print answer
번역, 나는 정확히 같은 알고리즘을 사용하려면 : "자바"파이썬에서 (나는 생각한다 알고 같은 재귀와 "튜플의리스트 목록"을 사용하지만, 지금은 그냥위한거야 재미)
나는 이것을 썼다 :
import java.util.ArrayList;
class Queens {
public static boolean under_attack(int col, ArrayList<Integer[]> queens) {
int left = col, right = col;
for(int i=queens.size()-1;i>=0;i--) {
int r = queens.get(i)[0];
int c = queens.get(i)[1];
left--;
right++;
if (c==left || c==col || c==right) {
return true;
}
}
return false;
}
public static ArrayList<ArrayList<Integer[]>> solve(int n){
ArrayList<ArrayList<Integer[]>> new_solutions = new ArrayList<ArrayList<Integer[]>>();
if (n==0) {
return new_solutions;
}
ArrayList<ArrayList<Integer[]>> smaller_solutions = solve(n-1);
for (int i=0;i<8;i++) {
for (ArrayList<Integer[]> solution : smaller_solutions) {
if (! under_attack(i+1,solution)) {
ArrayList<Integer[]> bigger_solution = (ArrayList<Integer[]>) solution.clone();
Integer [] tuple = new Integer [2];
tuple[0] = n;
tuple[1] = i+1;
bigger_solution.add(tuple);
new_solutions.add(bigger_solution);
}
}
}
return new_solutions;
}
public static void main(String[] args) {
System.out.println("Résolution du problème des 8 reines");
ArrayList<ArrayList<Integer[]>> solutions;
solutions = solve(8);
System.out.format("Nb solutions : %d%n",solutions.size());
for (ArrayList<Integer[]> solution : solutions) {
System.out.print("(");
for(Integer[] i:solution) {
System.out.format("[%d,%d],",i[0],i[1]);
}
System.out.println(")");
System.out.println("==============================");
}
}
}
그러나이 작동하지 않습니다 : 없음 대답은 당신이 생각하는 이유가 있나요
를 발견?
'ArrayList를 학습
행복 코딩 ... 그리고 자바 (당신이 진단의 첫 번째 줄에 메시지를 추가 확인할 수로) 호출되지 않습니다 - 그러지 마. –
그럼 어떻게해야합니까? – Eric