问题描述
样例输入
10 5 6
0 1 2 3 4
0 3 4 2 1 0
样例输出
6 2
样例输入
9 5 5
0 1 2 3 4
1 0 3 2 4
样例输出
4 4
数据说明
对于100%的数据,0 < N ≤ 200,0 < NA ≤ 200, 0 < NB ≤ 200。
先说说我的思路
先用一个二维数组保存两个选手出拳的情况,赢了给1,输了和平了给0
#include<bits/stdc++.h>
using namespace std;
int main(){
bool s[6][2]={0};
//设置胜负关系
s[0][2]=1;
s[0][3]=1;
s[1][0]=1;
s[1][3]=1;
s[2][1]=1;
s[2][4]=1;
s[3][4]=1;
s[3][2]=1;
s[4][0]=1;
s[4][1]=1;
//读入两人出拳顺序
int a[100],b[100];
int N,NA,NB;
cin>>N>>NA>>NB;
for(int i=0;i<NA;i++){
cin>>a[i];
}
for(int i=0;i<NB;i++){
cin>>b[i];
}
int suma=0,sumb=0;
//循环遍历
int temp=0;
int r=0,l=0;
while(temp<10){
if(s[a[r%NA]][b[l%NB]]){
suma++;
}
if(s[a[r&NA]][b[l%NB]]&&a[r%NA]!=b[l%NB]){
sumb++;
}
r++;
l++;
temp++;
}
cout<<suma<<' '<<sumb;
return 0;
}
当我放入蓝桥杯测试时给我报错了
百度了一下发现我的代码有内存方面的问题,而且也超时了。
下面这个版本是正确,但是我真的没怎么看出有什么不同,有大佬帮忙指出一下嘛!!!感谢!!!
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int A[220],B[220],na,nb,n;
int jduge[5][5]={
{0,-1,1,1,-1},
{1,0,-1,1,-1},
{-1,1,0,-1,1},
{-1,-1,1,0,1},
{1,1,-1,-1,0},
};
int main(){
cin>>n>>na>>nb;
for(int i=0;i<na;i++)cin>>A[i];
for(int i=0;i<nb;i++)cin>>B[i];
int ansa=0,ansb=0;
for(int i=0;i<n;i++){
if(jduge[A[i%na]][B[i%nb]]==1)ansa++;
else if(jduge[A[i%na]][B[i%nb]]==-1)ansb++;
}
cout<<ansa<<" "<<ansb;
return 0;
}