读书人

田鸡跳

发布时间: 2013-03-13 10:56:58 作者: rapoo

青蛙跳

/*网络上的青蛙跳游戏。 还没有把路径打印出来,公青蛙表示为 1,母青蛙表示成2;直接使用深度搜索就OK了,注意规则,两只相同的青蛙不能相连,路径可以直接用栈进行保存,然后输出来。。 */#include<iostream>#include<cmath>#include<cstdio>#include<algorithm>using namespace std;#define manx 100009int x[manx],flag;bool judge(){    for(int i=1;i<=3;i++)        if(x[i]!=2) return false;    for(int i=5;i<=7;i++)        if(x[i]!=1) return false;    if(x[4]) return false;    return true;}void dfs(int n){     /// 分好四个方向就Ok了    if(judge()){ flag=1; return ; }    if(n>7 || n<1) return ;    if(n-1>0 && x[n-1]==1) { ////公向左        swap(x[n-1],x[n]);        dfs(n-1);        swap(x[n-1],x[n]);    }    if(n+1<8 && x[n+1]==2){  //// 母向右        swap(x[n+1],x[n]);        dfs(n+1);        swap(x[n+1],x[n]);    }    if(n-2>0 && x[n-2]==1 && x[n-1]==2){ //// 公跳跃        swap(x[n-2],x[n]);        dfs(n-2);        swap(x[n],x[n-2]);    }    if(n+2<8 && x[n+1]==1 && x[n+2]==2){ //// 母跳跃        swap(x[n],x[n+2]);        dfs(n+2);        swap(x[n],x[n+2]);    }    return ;}int main(){    flag=0;    for(int i=0;i<=10;i++)        x[i]=0;    for(int i=1;i<=3;i++)        x[i]=1;    for(int i=5;i<=7;i++)        x[i]=2;    dfs(4);    if(flag) cout<<"yes!!"<<endl;    else cout<<"no!!"<<endl;    while(1);}

读书人网 >其他相关

热点推荐