简单描述下题意,就是给出足球比赛的场次数,和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;
}
也许方法比较复杂,如有更好的方法,欢迎交流;