首页 > 代码库 > [kuangbin带你飞]专题一 简单搜索 - A - 棋盘问题
[kuangbin带你飞]专题一 简单搜索 - A - 棋盘问题
1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<vector> 5 #include<cstring> 6 using namespace std; 7 struct node 8 { 9 int x;10 int y;11 };12 int n, k, l, ans;13 bool w[10], h[10];14 vector<node>dot;15 void bfs(int a, int b)16 {17 if(a==k+1)18 {19 ans++;20 return;21 }22 for(int i = b; i < l; i++)23 {24 if(w[dot[i].x] || h[dot[i].y]) continue;25 else26 {27 w[dot[i].x] = h[dot[i].y] = true;28 bfs(a+1, i+1);29 w[dot[i].x] = h[dot[i].y] = false;30 }31 }32 return;33 }34 int main()35 {36 // freopen("in.in","r",stdin);37 string c;38 node tmp;39 while(cin>>n>>k)40 {41 dot.clear();42 memset(w,0,sizeof(w));43 memset(h,0,sizeof(h));44 if(n==-1) break;45 for(int i = 1; i <= n; i++)46 {47 cin>>c;48 for(int j = 1; j <= n; j++)49 {50 51 if(c[j-1]==‘#‘)52 {53 tmp.x = i;54 tmp.y = j;55 dot.push_back(tmp);56 }57 } 58 }59 60 l = dot.size();61 ans = 0;62 bfs(1,0);63 cout<<ans<<endl;64 }65 return 0;66 }
[kuangbin带你飞]专题一 简单搜索 - A - 棋盘问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。