问题:输出N皇后的符合要求的摆放方式个数 实现代码: public class nQueen { public static void main(String[] args) { // TODO Auto-generated method stub LinkedList<acc> list1=new LinkedList<acc>();//其中的一种摆放方式 LinkedList<LinkedList<acc>> list=new LinkedList<LinkedList<acc>>();//所有的摆放方式 int n=5;//N皇后 queen(list1,list,0,n);//起始行为第0行 System.out.println(list.size()); } public static void queen(LinkedList<acc> list1,LinkedList<LinkedList<acc>> list,int row,int n) { for(int i=0;i<n;i++) { //将list中的元素全部复制到temp中,实现深复制 保证在一个递归循环体中list1的内容==刚传入时的内容(保护现场) if(list1.isEmpty()) { LinkedList<acc> temp=new LinkedList<acc>(); temp.add(new ACC(row,i)); queen(temp,list,row+1,n); } else if (ACC.isAllcorrect(list1,row,i))// { //将list中的元素全部复制到temp中,实现深复制 保证在一个递归循环体中list1的内容==刚传入时的内容(保护现场) LinkedList<acc> temp=new LinkedList<acc>(); for(ACC e:list1) temp.add(e); temp.add(new ACC(row,i)); if(temp.size()==n)//n皇后的结束标志 { list.add(temp); } else queen(temp,list,row+1,n);//数字0 :表示是路 } } } } class ACC { int x; int y; ACC(int x,int y) { this.x=x; this.y=y; } public boolean isCorrect(int x,int y) { if(this.x==x||this.y==y||Math.abs(this.x-x)==Math.abs(this.y-y)) return false;//不符合要求 else return true;//符合要求 } public static boolean isAllcorrect(LinkedList<acc> list1,int x,int y) { boolean flag=true; for(ACC a:list1) { flag=flag&&a.isCorrect(x, y); } return flag; } } </acc></acc></acc></acc></acc></acc></acc></acc></acc></acc></acc>