首页 > 其他分享 >NUIST Levoj P1220 皇后摆放问题

NUIST Levoj P1220 皇后摆放问题

时间:2023-04-14 11:14:51浏览次数:42  
标签:arr return int sum chess P1220 Levoj NUIST row

#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
int chess[9][9];
int arr[9][9];
int cnt=0,sum=0;
bool check(int row,int col)
{
for(int i=1;i<9;i++) if(chess[i][col]) return false;
for(int i=row,j=col;i>0&&j>0;i--,j--) if(chess[i][j]) return false;
for(int i=row,j=col;i>0&&j<9;i--,j++) if(chess[i][j]) return false;
return true;
}
void dfs(int row)
{
if(row==9)
{
int n=0;
for(int i=1;i<9;i++)
for(int j=1;j<9;j++)
if(chess[i][j] && arr[i][j])
n++;
if(n==sum) cnt++;
return;
}
for(int i=1;i<9;i++)
if(check(row,i))
{
chess[row][i]=1;
dfs(row+1);
chess[row][i]=0;
}
}
int main()
{
memset(chess,0,sizeof chess);
for(int i=1;i<9;i++)
for(int j=1;j<9;j++)
{
cin>>arr[i][j];
if(arr[i][j]) sum++;
}
dfs(1);
cout<<cnt<<endl;
return 0;
}

标签:arr,return,int,sum,chess,P1220,Levoj,NUIST,row
From: https://www.cnblogs.com/sunset48264/p/17317684.html

相关文章

  • 并查集(nuist LevOJ P1648)
    一、并查集1.1并查集简介并查集是一种简单的集合表示,是一种树形数据结构,可处理不相交集合的合并及查询问题。并查集可求联动分支数。并查集存储:现有9个元素0~9,建立一个数组(初始化元素为-1),用数组下标表示元素,数组中的数据表示根节点的下标。数组中数据为负数时表示它是根节点......
  • P1220 关路灯 (有点不同的区间dp)
    P1220关路灯-洛谷|计算机科学教育新生态(luogu.com.cn)本题有个很重要的信息:大爷是可以随手关灯,所以对于区间[i~j],出于贪心,大爷最后要么在i位置,要么在j位置。......
  • P1220 关路灯
    思路\(f_{i,j,0}\)表示关了\(i\~j\)的灯并且当前在\(i\)(\(f_{i,j,0}\))或\(j\)(\(f_{i,j,1}\))这里的\(f_{i,j,0}\)和\(f_{i,j,1}\)可以由\(f_{i+1,j,0},f_{i+1,j,......
  • P1220 关路灯
    #include<iostream>usingnamespacestd;intweast(int,int,int,int);constintN=55;intn,c;intf[N][N][3];//0代表在i处,1代表在j处......