SDUT2449走迷宫

来源:互联网 发布:mac的免费游戏 编辑:程序博客网 时间:2024/04/29 07:22
#include<bits/stdc++.h>using namespace std;int road,n,m,a[10][10],vis[10][10];void dfs(int x,int y){    if(x<0||x>n-1||y<0||y>m-1||vis[x][y]||a[x][y])        return;    else if(x==n-1&&y==m-1)    {        road++;        return;    }    else    {        vis[x][y]=1;        dfs(x-1,y);        dfs(x,y+1);        dfs(x+1,y);        dfs(x,y-1);        vis[x][y]=0;    }}int main(){    int T;    scanf("%d",&T);    while(T--)    {scanf("%d%d",&n,&m);    for(int i=0; i<n; i++)        for(int j=0; j<m; j++)            scanf("%d",&a[i][j]);    road=0;    memset(vis,0,sizeof(vis));    dfs(0,0);    printf("%d\n",road);    }    return 0;}//学习dps的测试程序/*#include<bits/stdc++.h>using namespace std;int visit[10][10],a[10][10];int n,m,k;int test=0;void dfs(int x,int y){    for(int i=0; i<n; i++)    {        for(int j=0; j<m; j++)            printf("%d",visit[i][j]);        printf("\n");    }    printf("%3d%3d\n",x,y);    if(x<0||x>n-1||y<0||y>m-1||visit[x][y]||a[x][y])    {        if(visit[x][y])            printf("%d%drep\n",x,y);        else if(a[x][y])            printf("%d%dobs\n",x,y);        else            printf("%d%dedge\n",x,y);        return;    }    else if(x==n-1&&y==m-1)    {        printf("%d%danswer\n",x,y);        k++;        return;    }    else    {        printf("%d%dgogogo\n",x,y);        visit[x][y]=1;        dfs(x-1,y);        dfs(x,y+1);        dfs(x+1,y);        dfs(x,y-1);        visit[x][y]=0;    }}int main(){    int t;    {        k=0;        scanf("%d%d",&n,&m);        for(int i=0; i<n; i++)            for(int j=0; j<m; j++)                scanf("%d",&a[i][j]);        memset(visit,0,sizeof(visit));        dfs(0,0);        //printf("%d\n",k);    }}*/

0 0