本文主要介绍头衔:女王角(queen),下面一起看看头衔:女王角(queen)相关资讯。
52.n皇后iin的问题,研究如何把n个皇后放到n × n的棋盘上,防止皇后互相攻击。
给你一个整数n,返回n皇后问题不同解的个数。
示例1:
输入:n = 4输出:2解释:如上图所示,皇后4问题有两种不同的解法。示例2:
输入:n = 1输出:1提示:
1 = n = 9思路:
经典女王n,不变,
类解{public: int sum = 0;//方案数int total n queen(int n){//n queen从返回解的个数变成了返回解的个数。使用 。 表示棋盘 问与答。;来表示棋子vectorstringboard(n,string(n, 。 ));回溯(board,0);返回总和;} void backtrack(vector string board,int i){ if(i = = board . size){ sum;返回;} for(int j = 0;jboard . size;j ){ if(!isvalid(board,i,j)){//棋子非法摆放,don t选择继续;}//做出选择board[i][j]= ;问与答。;;回溯(板,i 1);//取消选择board[i][j]= ;。 ;} } bool is valid(vector string board,int row,int col){ int n = board . size;//检查该列是否有(int i = 0;irowi){ if(board[i][col]= = ;问与答。;)返回false}//检查右上角for (int i = row-1,j = col 1;i = 0j n;i -,j){ if(board[i][j]= = ;问与答。;)返回false}//检查左上角for (int i = row-1,j = col-1;i = 0j = 0;i -,j-){ if(board[i][j]= = ;问与答。;)返回false}返回true}};标签:
皇后溶液
了解更多头衔:女王角(queen)相关内容请关注本站点。