青蛙跳

本文介绍了一种使用深度优先搜索算法解决青蛙跳棋游戏的方法。游戏目标是将所有公青蛙移动到右边,所有母青蛙移动到左边,中间留空。通过定义特定的移动和跳跃规则实现目标状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

网络上的青蛙跳游戏。
 
还没有把路径打印出来,公青蛙表示为 1,母青蛙表示成2;
直接使用深度搜索就OK了,注意规则,两只相同的青蛙不能相连,
路径可以直接用栈进行保存,然后输出来。。 

*/
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
#define manx 100009
int 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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值