简单描述下题意,就是给出足球比赛的场次数,和a,b球队分别的进球数。求最小平局次数,并输出每一局的评分(符合要求均可)。

思路:

1.如果双方进球数为零,那么肯定n场都是平局;

2.如果只比一场,那么a,b相等就是平局,否则就不是

3.排除以上两种情况外,如果a+b>=n,那么最少可以一场平局都没有(都为1:0或0:1);

否则,最小平局数就是n-(a+b);

话不多说,上代码

#include<bits/stdc++.h>
using namespace std;

int main() {
int n,a,b;
cin>>n>>a>>b;
if(a==0&&b==0){
    cout<<n<<endl;
    for (int i = 0; i < n; i++)
    {
        cout<<"0:0"<<endl;
    }    
}else if(n==1){
    if(a==b){
        cout<<"1"<<endl;
        cout<<a<<":"<<b<<endl;
    }else {
        cout<<"0"<<endl;
        cout<<a<<":"<<b<<endl;
    }
}else if(a+b>=n){
    cout<<"0"<<endl;
    if(a>=n&&b!=0){
            int x=a-(n-2);
            cout<<x<<":"<<"0"<<endl;
            a=n-2;
            n--;
        }
    while (n>0)
    {   
        if(n==1){
            cout<<a<<":"<<b<<endl;//a=n-2;x=a-(n-2)
            break;
        }if(a){
            cout<<"1:0"<<endl;
            a--;
        }else {
            cout<<"0:1"<<endl;
            b--;
        }
        n--;
    }       
}else {
    cout<<(n-(a+b))<<endl;
    while (n>0)
    {
        if(n==(a+b)){
            if(n==1){
            cout<<a<<":"<<b<<endl;
            break;
        }
        if(a){
            cout<<"1:0"<<endl;
            a--;
        }else {
            cout<<"0:1"<<endl;
            b--;
        }
        }else cout<<"0:0"<<endl;
        n--;
    }   
}
return 0;
}

也许方法比较复杂,如有更好的方法,欢迎交流;