POJ 1321 深搜dfs

思路其实挺简单的,为什么我想不到呢!!!

原因分析:(1)题目还是做少了

     (2)做题目的时候在放音乐

     (3)最近脑袋都不愿意想思路总是想一些无用的

改进:(1)以后做题目坚决不开音乐,QQ直接挂隐身

   (2)想题目的时候一定要认真,开启完全状态

   (3)对自己再认真一点,加油

 1 #include<cstdio>
 2 #include<cstring>
 3 const int qq=10;
 4 char map[qq][qq];
 5 int vis[qq];
 6 int n,k,ans;
 7 void dfs(int colu,int num)
 8 {
 9     if(num==k){
10         ++ans;
11         return;
12     }
13     for(int j,i=colu;i<n;++i)            
14         for(j=0;j<n;++j)
15             if(map[i][j]=='#'&&!vis[j]){
16                 vis[j]=1;                //对列进行标记 
17                 dfs(i+1,num+1);            //因为要求不在一行,所以对行进行枚举 
18                 vis[j]=0;
19             }
20     return;
21 }
22 int main()
23 {
24     while(~scanf("%d %d%*c",&n,&k)&&(n!=-1))
25     {    
26         memset(vis,0,sizeof(vis));
27         for(int i=0;i<n;++i)
28             gets(map[i]);
29         ans=0;
30         dfs(0,0);
31         printf("%d\n",ans);
32     }
33 }

 

posted @ 2016-02-03 10:49  我不萌、我要高冷  阅读(301)  评论(0编辑  收藏  举报