fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int N,b[10][10],d1[20],d2[20],ans;vector<pair<int,int>>B,W;
  4. void dfs(int i,int c,vector<pair<int,int>>&v){
  5. if(i==v.size()){ans=max(ans,c);return;}
  6. int x=v[i].first,y=v[i].second;
  7. if(!d1[x+y]&&!d2[x-y+N-1]) d1[x+y]=d2[x-y+N-1]=1,dfs(i+1,c+1,v),d1[x+y]=d2[x-y+N-1]=0;
  8. dfs(i+1,c,v);
  9. }
  10. int main(){
  11. ios::sync_with_stdio(0);cin.tie(0);
  12. cin>>N;
  13. for(int i=0;i<N;i++)for(int j=0;j<N;j++){cin>>b[i][j];if(b[i][j])((i+j)%2?W:B).push_back({i,j});}
  14. dfs(0,0,B);int r=ans;ans=0;dfs(0,0,W);cout<<r+ans;
  15. }
Success #stdin #stdout 0.01s 5320KB
stdin
5
1 1 0 1 1
0 1 0 0 0
1 0 1 0 1
1 0 0 0 0
1 0 1 1 1
stdout
7