题解 | 田忌赛马

田忌赛马

https://www.nowcoder.com/practice/49d799f65a0749588e9cd7e6135a4a9a

#include <iostream>
using namespace std;

int v[3];
int a[3];

//田忌获胜局数
int win = 0;
//是否取得胜利的标志
bool isWin=false;
//标志每匹马是否被使用
bool used[3];

void dfs(int n){
    if(n==3){
	  //超过两局获胜即可
        if(win>=2)
            isWin=true;
        return;
    }
    
    for(int i=0;i<3;i++){
	  //每次dfs找到还没有比赛过的马
        if(used[i]==false){
            used[i]=true;
            if(a[i]>v[n])
                win++;
            dfs(n+1);
            if(a[i]>v[n])
                win--;
            used[i]=false;
        }
    }
}

int main() {
    
    for(int i=0;i<3;i++){
        cin>>v[i];
    }
    for(int i=0;i<3;i++){
        cin>>a[i];
    }

    dfs(0);

    if(isWin==true)
        cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;

    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

AC鸽想进大厂:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
写不来代码的小黑:这好像是boss默认的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务