int main() {
int n,r,l,ans=0;
cin >> n;
int a[n];
for(int i=0; i<n; i++) {
cin >> a[i];
if(a[i] == 0) {
a[i] = 2;
}
}
for(int i=0; i<n; i++) {
if(a[i] == 1) {
l = i;
break;
}
}
for(int i=n; i>0; i--) {
if(a[i] == 1) {
r = i;
break;
}
}
for(int i=0; i<l; i++) {
a[i] = 0;
}
for(int i=n; i>r; i--) {
a[i] = 0;
}
for(int i=0; i<n; i++) {
if(a[i] == 9){
a[i-1] = 0;
a[i+1] = 0;
}
}
for(int i=0; i<n; i++) {
if(a[i] == 2){
ans++;
}
}
cout << ans;
cout << endl;
return 0;
}
第一個迴圈 不用把0變成2...別幹傻事
for(int i=0; i<n; i++) {
cin >> a[i];
if(a[i] == 0) {
a[i] = 2;
}
}
你後面兩個for不就在search left and right
後面for直接從left做到right就好啊 還可以少跑迴圈
所以有兩個for根本就可以刪掉了
再來錯誤的地方是出在
for(int i=0; i<n; i++) {
if(a[i] == 9){
a[i-1] = 0;
a[i+1] = 0;
}
}
假如 1 0 9 9 0 1
你判斷到第一個9 會把第二個9吃掉 第二個9旁邊的0還會存在
所以就錯了...