【洛谷入门赛】B4018 游戏与共同语言
题意
这里有两个队伍分别叫 A 和 B。
分别给定这两个队伍的胜利数、净胜局、平局数量。
求哪个队更厉害,就输出哪个。
具体比较规则如下:
两队中胜利数高的队伍更厉害。
若胜利数相同,净胜数高的队伍更厉害。
若净胜数仍然相同,平局记录数更低的队伍更厉害。
(题目特殊条件:平局数一定不一样)
举个例子。
队伍 A B 的数据如下:
队伍:A B
胜利数:11 11
净胜数:20 20
平局数:7 6
那么比较过程(如图所示):
对于这个样例的解释:
前面的胜利数和净胜数都一样,所以只能比较平局数。又因为平局数越小越厉害,故 B 要更厉害所以输出 B。
思路
首先,我们要输入。
- 注:这里用数组记录。w[] 为胜利数、c[] 为净胜数、t[] 为平局数。这里下标为 1 的是 A 队,同理可得下表为 2 的是 B 队。
cin>>w[1]>>c[1]>>t[1]>>w[2]>>c[2]>>t[2];
输入完之后,根据题目要求:我们要对 A B 两队的数据进行挨个比较。
首先登场的是胜局数。如果它不同,直接比较然后输出哪一队更强即可。
这部分的代码:
(如果你没看懂 cout 输出的是什么,那么请移步到后面)
if(w[1]!=w[2]){
cout<<(w[1]>w[2]?"A":"B");
}
其次,如果胜利局数一样,那就比较净胜局数。这里是净胜局数越多越好。
else if(c[1]!=c[2]){
cout<<(c[1]>c[2]?"A":"B");
}
最后,如果净胜局数也一样,那就比较平局数记录。这里是平局数越少越好。
else{
cout<<(t[1]>t[2]?"B":"A");
}
由于题目有特殊条件说不可能平局数记录也一样,所以到此为止。
放一下完整代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5;
int w[N],c[N],t[N];
signed main(){
cin>>w[1]>>c[1]>>t[1]>>w[2]>>c[2]>>t[2];
if(w[1]!=w[2]){
cout<<(w[1]>w[2]?"A":"B");
}
else if(c[1]!=c[2]){
cout<<(c[1]>c[2]?"A":"B");
}
else{
cout<<(t[1]>t[2]?"B":"A");
}
return 0;
}
如果你不知道这里:
const int N=5;
是在干什么,这一份是直接定义变量的代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int w[5],c[5],t[5];
signed main(){
cin>>w[1]>>c[1]>>t[1]>>w[2]>>c[2]>>t[2];
if(w[1]!=w[2]){
cout<<(w[1]>w[2]?"A":"B");
}
else if(c[1]!=c[2]){
cout<<(c[1]>c[2]?"A":"B");
}
else if(t[1]!=t[2]){
cout<<(t[1]>t[2]?"B":"A");
}
return 0;
}
如果你没看懂 cout 输出的是啥
这里使用的是三目运算符。
格式为:
/*[条件]*/?/*[如果满足条件,那么……]*/:/*[如果不满足条件,那么……]*/;
约等于:
if(/*[条件]*/)/*[如果满足条件,那么……]*/;
else/*[如果不满足条件,那么……]*/;
这就是三目运算符。三目运算符后面不满足条件执行的东西只能是一句话,就相当于是不打括号的 if 和 else。使用三目运算符可以在编程的时候加快你的速度。
这里附上不用三目运算符的版本:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5;
int w[N],c[N],t[N];
void A(){//用函数封装更方便
cout<<"A";
}
void B(){
cout<<"B";
}
signed main(){
cin>>w[1]>>c[1]>>t[1]>>w[2]>>c[2]>>t[2];
if(w[1]!=w[2]){
if(w[1]>w[2])A();
else B();
}
else if(c[1]!=c[2]){
if(c[1]>c[2])A();
else B();
}
else{
if(t[1]>t[2])B();
else A();
}
return 0;
}
顺带附上不用函数封装的输出的版本:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5;
int w[N],c[N],t[N];
signed main(){
cin>>w[1]>>c[1]>>t[1]>>w[2]>>c[2]>>t[2];
if(w[1]!=w[2]){
if(w[1]>w[2])cout<<"A";
else cout<<"B";
}
else if(c[1]!=c[2]){
if(c[1]>c[2])cout<<"A";
else cout<<"B";
}
else{
if(t[1]>t[2])cout<<"B";
else cout<<"A";
}
return 0;
}
顺带附上我的通过记录!
(你有发现这四个字是四个不同版本代码的提交记录吗?)
那么这道题就结束了,希望可以帮到你!