题解 | 田忌赛马
田忌赛马
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")