思路其实挺简单的,为什么我想不到呢!!!
原因分析:(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 ",ans); 32 } 33 }