zoukankan      html  css  js  c++  java
  • wenbao与dfs

    杭电(1010)

     1 #include <stdio.h>
     2 #define MAXN 8
     3 int n,m,t,c,d;
     4 bool flag=false;
     5 char a[MAXN][MAXN];
     6 int dir[8][2]={1,0,0,1,-1,0,0,-1};
     7 void dfs(int x,int y,int num )
     8 {
     9 
    10 if(!flag)
    11 {
    12 for(int i=0;i<4;i++)
    13 {
    14 if(a[x+dir[i][0]][y+dir[i][1]]=='.'&&!flag)
    15 {
    16 a[x+dir[i][0]][y+dir[i][1]]='#';
    17 dfs(x+dir[i][0],y+dir[i][1],num++);
    18 a[x+dir[i][0]][y+dir[i][1]]='.';
    19 }
    20 else if(a[x+dir[i][0]][y+dir[i][1]]=='D'&&num==t)
    21 {
    22 flag=true;
    23 return;
    24 }
    25 }
    26 
    27 }
    28 
    29 }
    30 
    31 void xxoo()
    32 {
    33 for(int i=0;i<MAXN;i++)
    34 {
    35 for(int j=0;j<MAXN;j++)
    36 a[i][j]='X';
    37 }
    38 }
    39 int main(void)
    40 {
    41 char b[30];
    42 while(scanf("%d %d %d",&n,&m,&t)&&n&&m&&t)
    43 {
    44 xxoo();
    45 flag=false;
    46 getchar();
    47 for(int i=1;i<=n;i++)
    48 {
    49 gets(b);
    50 for(int j=1;j<=m;j++)
    51 {
    52 a[i][j]=b[j-1];
    53 if(a[i][j]=='S')
    54 c=i,d=j+1;
    55 }
    56 
    57 }
    58 for(int i=0;i<MAXN;i++)
    59 {
    60 for(int j=0;j<MAXN;j++)
    61 printf("%c",a[i][j]);
    62 printf("
    ");
    63 }
    64 
    65 dfs(c,d,0);
    66 if(flag)
    67 printf("YES
    ");
    68 else
    69 printf("NO
    ");
    70 }
    71 }

    江西理工大学第1.5周DFS 棋盘回溯递归D

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <string.h>
     4 using namespace std;
     5 char a[120][120];
     6 int n,m,f,sum;
     7 int dir[8][2]= {-1,0,0,-1,0,1,1,0,1,1,-1,-1,1,-1,-1,1};
     8 int b[120];
     9 void dfs(int x, int y)
    10 {
    11 if(y==m)
    12 {
    13 sum++;
    14 return;
    15 }
    16 for(int k=x; k<n; k++)
    17 for(int j=0; j<n; j++)
    18 if(a[k][j]=='#'&&b[j]==0)
    19 {
    20 b[j]=1;
    21 dfs(k+1,y+1);
    22 b[j]=0;
    23 }
    24 }
    25 int main()
    26 {
    27 while(scanf("%d %d",&n,&m)&&n!=-1&&m!=-1)
    28 {
    29 memset(b,0,sizeof(b));
    30 sum=0;
    31 for(int i=0; i<n; i++)
    32 scanf("%s",a[i]);
    33 dfs(0,0);
    34 cout<<sum<<endl;
    35 }
    36 return 0;
    37 }

    江西理工大学第1.5周DFS E题

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <string.h>
     4 using namespace std;
     5 char a[120][120];
     6 int n,m,f,sum,num;
     7 int dir[8][2]= {0,1,1,0,-1,0,0,-1,1,1,-1,-1,1,-1,-1,1};
     8 char b[120];
     9 void dfs(int x, int y)
    10 {
    11 if(x<0||x>=n||y<0||y>=m) return ;
    12 f=1;
    13 for(int k=0; k<num; k++)
    14 {
    15 if(a[x][y]==b[k])
    16 f=0;
    17 }
    18 if(f==0&&(x||y))
    19 return ;
    20 else if(f==1)
    21 sum++,b[num]=a[x][y],num++;
    22 for(int t=0; t<4; t++)
    23 {
    24 int xx=x+dir[t][0];
    25 int yy=y+dir[t][1];
    26 dfs(xx,yy);
    27 }
    28 
    29 }
    30 int main()
    31 {
    32 while(scanf("%d %d",&n,&m))
    33 {
    34 getchar();
    35 memset(b,0,sizeof(b));
    36 sum=1,num=1;
    37 for(int i=0; i<n; i++)
    38 scanf("%s",a[i]);
    39 b[0]=a[0][0];
    40 dfs(0,0);
    41 cout<<sum<<endl;
    42 }
    43 return 0;
    44 }

    只有不断学习才能进步!

  • 相关阅读:
    初始化生成linux sysfs(8)
    内存延迟监控系统组件
    数组代码First Missing Positive
    类文件Spring中空值的写法java教程
    状态键盘完美适应iOS中的键盘高度变化
    框架绑定JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember
    域编码jquery的AJAX跨域请求及跨域请求的原理
    数据格式利用GSON接卸JSON数据
    网元查看一个无厘头的core dump问题定位
    类型应用oracle如何显示毫秒?
  • 原文地址:https://www.cnblogs.com/wenbao/p/5727801.html
Copyright © 2011-2022 走看看