ACM搜索问题盘点
深度搜索:棋盘问题http://poj.org/problem?id=1321
<br /><br /><br /><br />//#include<bits/stdc++.h> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<vector> #include<set> #include<map> #include<stack> #include<queue> using namespace std; #define INF 0x3f3f3f3f typedef long long ll; char a[10][10]; int vis[10]; int n,k; int ans,now; void DFS(int m) { if(now==k){ ans++; return ; } if(m==n) return ; for(int i=0;i<n;i++){ if(!vis[i]&&a[m][i]=='#') { vis[i]=1; now++; DFS(m+1); vis[i]=0; now--; } } DFS(m+1); } int main() { while(scanf("%d%d",&n,&k)&&n!=-1&&k!=-1) { memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) scanf("%s",a[i]); ans=now=0; DFS(0); printf("%d\n",ans); } }
相关推荐
yousanfen 2019-11-06
chinabluexfw 2019-05-29
88971730 2010-12-26
xgxyxs 2019-06-07
DoctorCuiLab 2019-03-28
Javamoon 2017-11-03
樱花落瓣 2019-03-29
liujainq 2017-12-12
wumingxiaozei 2017-10-25
人工智能和大数据 2018-04-17
ktmhate 2017-11-26
xuezhengyyy 2010-03-12
心理学哲学批判性思维 2018-03-10