深搜

来源:互联网 发布:什么云计算 编辑:程序博客网 时间:2024/06/05 18:50
//POJ 马走日//深搜dfs//cnt记录所有次数 初始化为0 tot 记录经过点数 //决策 i-2,j+1 i-2,j-1 i-1,j+2 i-1,j-2//判断是否走过,没有判断tot+1是否满足,不满足返回,满足cnt+1 #include<iostream>#include<cstring>#include<cstdio>using namespace std;int cnt,dat;int b1,c1;int shz[11][11];int x[]={-2,-2,-1,-1,+2,+2,+1,+1};int y[]={-1,+1,-2,+2,+1,-1,+2,-2};void dfs(int a,int b,int c){    shz[a][b]=1;    if(c==dat){        cnt++;        shz[a][b]=0;        return;    }    for(int i=0;i<8;i++){        if(a+x[i]>=0&&a+x[i]<b1&&b+y[i]>=0&&b+y[i]<c1&&!shz[a+x[i]][b+y[i]]){            dfs(a+x[i],b+y[i],c+1);            shz[a+x[i]][b+y[i]]=0;        }    } } int main(){    int a;    cin>>a;    int d,e;    while(a--){        cnt=0;        memset(shz,0,sizeof(shz));        cin>>b1>>c1>>d>>e;        dat=b1*c1;        dfs(d,e,1);        cout<<cnt<<endl;    }    return 0;} 
0 0