#这样一个if,一个else if是可以的,AC代码
if((a1==0&&aa[j].cx==0)||(a1==1&&aa[j].cx==1)){//面向圈内,向左,-- 面向圈外,向右,
j=(j-s1+n)%n;
}
else if((a1==1&&aa[j].cx==0)||(a1==0&&aa[j].cx==1)){//面向圈外,向左,++ 面向圈内,向右,
j=(j+s1)%n;
}
#但是改为两个if就不行了。。。为什么啊???? 求助求助
if((a1==0&&aa[j].cx==0)||(a1==1&&aa[j].cx==1)){//面向圈内,向左,-- 面向圈外,向右,
j=(j-s1+n)%n;
}
if((a1==1&&aa[j].cx==0)||(a1==0&&aa[j].cx==1)){//面向圈外,向左,++ 面向圈内,向右,
j=(j+s1)%n;
}
###以下是AC代码
#include<iostream>
using namespace std;
struct A{
int cx;//朝向 0 表示朝向圈内,1 表示朝向圈外。
char s[15];//职业
};
int main()
{
int n,m;//表示玩具小人的个数和指令的条数。
cin>>n>>m;
A aa[n];//A aa[2000];
int a1,s1;
int j=0;//从第一个人开始
for(int i=0;i<n;i++){
cin>>aa[i].cx>>aa[i].s;//读入 逆时针
//面朝圈内的玩具小人, 它的左边是顺时针方向, 右边是逆时针方向;
//而面向圈外的玩具小人, 它的左边是逆时针方向, 右边是顺时针方向。
}
for(int i=1;i<=m;i++)
{
cin>>a1>>s1;//a1 0 向左s1人。
if((a1==0&&aa[j].cx==0)||(a1==1&&aa[j].cx==1)){//面向圈内,向左,-- 面向圈外,向右,
j=(j-s1+n)%n;
}
else if((a1==1&&aa[j].cx==0)||(a1==0&&aa[j].cx==1)){//面向圈外,向左,++ 面向圈内,向右,
j=(j+s1)%n;
}
}
cout<<aa[j].s;
//现在问题,有测试点不对 可能逻辑上有问题
return 0;
}