解题思路:
注意事项:
把map容器当成正常的数组使用,区别就是内存空间可以变化,存储元素多少取决于我们需要多少
我的解决这题的方法可能比较弯弯绕绕,没有那么直接
参考代码:
#include<bits/stdc++.h>
#include<algorithm>
using namespace std ;
int main( )
{
int n=0 ,na=0 ,nb=0 ,temp=0 ;
cin>>n>>na>>nb ;
int ma=(na>nb)?na:nb ;
map<int ,int>mpa ;
//map<地址的数据类型,元素的数据类型>名字 ;
//相当于创造一个叫mpa的数组,它的下标(或者是地址)是int类型,它存储的元素是int类型
map<int, int>mpb ;
for ( int i=0 ; i<na ; i++ )
{
cin>>mpa[i] ;
}
for ( int i=0 ; i<nb ; i++ )
{
cin>>mpb[i] ;
}
if ( nb<n )
{
for ( int i=0 ; i<n-nb ; i++ )
{
if ( i%nb==0 )
temp=0 ;
mpb[nb+i]=mpb[temp] ;
temp++ ;
}
}
/*把mpb的长度补充到玩石头剪刀布的次数,这里有其他方法,但是我的可能比较好理解,比较好想*/
temp=0 ;
if ( na<n )
{
for ( int i=0 ; i<n-na ; i++ )
{
if ( i%na==0 )
{
temp=0 ;
}
mpa[na+i]=mpa[temp] ;
temp++ ;
}
}
int recorda=0 ,recordb=0 ,record=0 ;
for ( int i=0 ; i<n ; i++ )
{
int ko=mpa[i]-mpb[i] ;
if ( ko==-2 || ko==-3 || ko==5 )
recorda++ ;
else if ( ko==2 || ko==3 || ko==-5 )
recordb++ ;
else if ( ko==0 )
record++ ;
}
int MAX = max(recorda, recordb);
if ( recorda!=recordb )
{
if ( MAX==recorda ) cout<<"A"<<endl ;
else if ( MAX==recordb ) cout<<"B"<<endl ;
}
else if ( record==n || recorda==recordb ) cout<<"draw"<<endl ;
return 0 ;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复