题目描述给定整数n给定n个整数xi1≤xi≤4 表示小Z要去的站点 如果连续两个要去的地方相同那么直接忽略其中的一个。求小Z最快多长时间走完默认一开始在1号点。走完1次过一个单位时间。单位时间内会变化一次变化规律是:第一次开始时1可以到32可以到4反方向也行走完后或者不走进入下一次下面三种也满足。第二次 14 可以互到。第三次 1可以到23可以到4反方向也行。第四次 23可以互到。走完后或者不走进
#include
int n, ans, sum; int a[25010];
int main(void) { cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; }
int start = 1;
for(int i = 1; i <= n; i++) {
if(a[i] == a[i - 1]) continue;
sum++;
if(start == 1 && a[i] == 1) ans += 0;
else if(start == 1 && a[i] == 2) ans += 3;
else if(start == 1 && a[i] == 3) ans += 1;
else if(start == 1 && a[i] == 4) ans += 2;
else if(start == 2 && a[i] == 1) ans += 3;
else if(start == 2 && a[i] == 2) ans += 0;
else if(start == 2 && a[i] == 3) ans += 4;
else if(start == 2 && a[i] == 4) ans += 1;
else if(start == 3 && a[i] == 1) ans += 1;
else if(start == 3 && a[i] == 2) ans += 4;
else if(start == 3 && a[i] == 3) ans += 0;
else if(start == 3 && a[i] == 4) ans += 3;
else if(start == 4 && a[i] == 1) ans += 2;
else if(start == 4 && a[i] == 2) ans += 1;
else if(start == 4 && a[i] == 3) ans += 3;
else if(start == 4 && a[i] == 4) ans += 0;
start = a[i];
if(sum > 4) {
start = 1;
sum = 0;
}
}
cout << ans << endl;
return 0;
原文地址: http://www.cveoy.top/t/topic/iRSq 著作权归作者所有。请勿转载和采集!