标签:
1 #include<stdio.h> 2 #include<string.h> 3 int n,t,z[21],mark[21]; 4 //int m[10010][21]; 5 bool isprime(int x){ 6 if(x==0||x==1)return false; 7 for(int i=2;i<x;i++){ 8 if(x%i==0)return false; 9 } 10 return true; 11 } 12 void dfs(int flot){ 13 if(flot>=n){ 14 for(int i=0;i<n;i++){ 15 //m[t][i]=z[i]; 16 if(i)printf(" "); 17 printf("%d",z[i]); 18 }puts(""); 19 t++;return; 20 } 21 for(int i=2;i<=n;i++){ 22 if(isprime(z[flot-1]+i)&&!mark[i]){if(flot==n-1){ 23 if(!isprime(1+i))break; 24 }//判断首尾; 25 mark[i]=1; 26 z[flot]=i; 27 dfs(flot+1); 28 mark[i]=0; 29 } 30 //else dfs(top-1,flot); 31 } 32 return ; 33 } 34 int main(){ 35 int k=0; 36 while(~scanf("%d",&n)){ 37 k++; 38 printf("Case %d:\n",k); 39 memset(mark,0,sizeof(mark)); 40 z[0]=1; 41 dfs(1); 42 puts(""); 43 } 44 return 0; 45 }
1 #include<stdio.h> 2 int m,n; 3 char map[110][110]; 4 void dfs(int x,int y){ 5 if(map[y][x]==‘*‘||x<0||x>=n||y<0||y>=m)return ; 6 map[y][x]=‘*‘; 7 dfs(x+1,y); 8 dfs(x,y+1); 9 dfs(x-1,y); 10 dfs(x,y-1); 11 dfs(x+1,y+1); 12 dfs(x-1,y-1); 13 dfs(x-1,y+1); 14 dfs(x+1,y-1); 15 } 16 int main(){int tot; 17 while(~scanf("%d%d",&m,&n),m||n){tot=0; 18 for(int y=0;y<m;y++)scanf("%s",map[y]); 19 for(int y=0;y<m;y++){ 20 for(int x=0;x<n;x++){ 21 if(map[y][x]==‘@‘){ 22 dfs(x,y);tot++; 23 } 24 } 25 } 26 printf("%d\n",tot); 27 } 28 return 0;}
标签:
原文地址:http://www.cnblogs.com/handsomecui/p/4700533.html