思路~
string跟string数组可以直接用==对比的,标记位置更新步数就OK
#include <iostream>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <queue>
#include <stack>
typedef long long LL;
using namespace std;
int main(){
int n,sum,w;
string a[30]={"xx","Alice","Ariel","Aurora","Phil","Peter","Olaf","Phoebus","Ralph","Robin",
"Bambi","Belle","Bolt","Mulan","Mowgli","Mickey","Silver","Simba","Stitch",
"Dumbo","Genie","Jiminy","Kuzko","Kida","Kenai","Tarzan","Tiana","Winnie"};
string s;
cin>>n;
sum=0; w=1;
while (n--) {
cin>>s;
if(w==1){
for (int i=1; i<=27; i++) {
if(s==a[i]){
if(i>=10&&i<=18){sum++;w=2;}
else if(i>=19&&i<=27){sum=sum+2;w=3;}
}
}
}
else if(w==2){
for (int i=1; i<=27; i++) {
if(s==a[i]){
if(i>=1&&i<=9){sum++;w=1;}
else if(i>=19&&i<=27){sum++;w=3;}
}
}
}
else{
for (int i=1; i<=27; i++) {
if(s==a[i]){
if(i>=1&&i<=9){sum=sum+2;w=1;}
else if(i>=10&&i<=18){sum++;w=2;}
}
}
}
}
cout<<sum<<endl;
return 0;
}