棋盘问题 #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; } }