码迷,mamicode.com
首页 > 其他好文 > 详细

Problem L. World Cup

时间:2019-10-05 22:50:37      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:pre   mes   world   c++   for   之间   code   puts   dfs   

题目大意:有A,B,C,D四个队伍,两两之间有一个比赛,假如A和B比赛,如果平局,各加一分,如果说A胜,给A加3分,不给B加分,B胜同理

给出A,B,C,D,的得分,判断形成这种局面有多少种方式。

思路 DFS,,枚举每3种情况,赢输平局。

#include<bits/stdc++.h>
using namespace std;
int d[10][3]={{1,2},{1,3},{1,4},{2,3},{2,4},{3,4}};
int t[10][10][10][10] ;
int arr[100+10];
void dfs(int x){
    if(x==6) {
        t[arr[1]][arr[2]][arr[3]][arr[4]]++;
        return ;
    }
    for(int i=1;i<=3;i++){
        if(i==1){
            arr[d[x][0]]++;
            arr[d[x][1]]++; 
                dfs(x+1); 
             arr[d[x][0]]--;
            arr[d[x][1]]--;
        }
    
        else if(i==2){
            arr[d[x][0]]+=3;
            dfs(x+1);
            arr[d[x][0]]-=3;
        }
        else {
            arr[d[x][1]]+=3;
            dfs(x+1);
            arr[d[x][1]]-=3;
        }
    }
}

void solve(int xx){
    int a,b,c,d;
    cin>>a>>b>>c>>d; 
    printf("Case #%d: ",xx);
    if(a>=10||b>=10||c>=10||d>=10)    puts("Wrong Scoreboard");
    else if(t[a][b][c][d]==1) puts("Yes");
    else if(t[a][b][c][d]==0) puts("Wrong Scoreboard");
    else  puts("No");
}
int main(){
    dfs(0);
    int t;
    cin>>t;
    for(int i=1;i<=t;i++) solve(i);
    return 0;
}

 

Problem L. World Cup

标签:pre   mes   world   c++   for   之间   code   puts   dfs   

原文地址:https://www.cnblogs.com/Accepting/p/11625771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!