这道题是一个简单的枚举加模拟,关键要解决这么几个问题:
1.如何判断输赢
2.周期循环怎么解决(约瑟夫环问题) 还要注意的是,更新数据要放在判断输赢之前,否则会少一次
#include<iostream>
using namespace std;
int Ca,Cb;
int arr1[205],arr2[205];
int rule[5][5]={0};
int k1,k2;
int N;
int score_A,score_B;
int compare(int a,int b){
return rule[a][b];
}
int main()
{
cin>>N>>Ca>>Cb;
for(int i=0;i<Ca;i++){
cin>>arr1[i];
}
for(int i=0;i<Cb;i++){
cin>>arr2[i];
}
//初始化规则数据
rule[0][1]=-1;
rule[0][2]=1;
rule[0][3]=1;
rule[0][4]=-1;
rule[1][2]=-1;
rule[1][3]=1;
rule[1][4]=-1;
rule[2][3]=-1;
rule[2][4]=1;
rule[3][4]=1;
for(int i=0;i<5;i++){
for(int j=i+1;j<5;j++){
rule[j][i]=-rule[i][j];
}
}
for(int i=0;i<N;i++){
k1=i%Ca;
k2=i%Cb;
int ret= compare(arr1[k1],arr2[k2]);
if(ret>0)score_A++;
else if(ret<0)score_B++;
}
cout<<score_A<<" "<<score_B;
return 0;}