棋盘问题
#include<bits/stdc++.h>
using namespace std;
void func(int,int);
bool tf(int,int);
void c();
int n,k;
char a[110][110];
int cnt2=0;
int main()
{cin>>n>>k;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}func(0,0);cout<<"----------"<<endl;cout<<cnt2;return 0;
}
void func(int x,int cnt)
{if(cnt==k){c();cnt2++;return;}if(x==n){return;}for(int i=0;i<n;i++){if(tf(x,i)==true&&a[x][i]!='.'){a[x][i]='o';func(x+1,cnt+1);a[x][i]='.';}}func(x+1,cnt);
}
bool tf(int x,int y)
{for(int i=0;i<x;i++){if(a[i][y]=='o'){return false;}}return true;
}
void c()
{cout<<"----------"<<endl;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cout<<a[i][j];}cout<<endl;}
}