1. 程式人生 > >題解 CF938A 【Word Correction】

題解 CF938A 【Word Correction】

思想

首先判斷是否為母音,如果是,就去看後面有多少連續的母音,一併標記(刪除)然後去找下一個母音;

程式碼實現及註釋

#include<bits/stdc++.h>
using namespace std;
#define go(i,j,n,k) for(int i=j;i<=n;i+=k)//迴圈偷懶
#define fo(i,j,n,k) for(int i=j;i>=n;i-=k)
#define mn 105
char a[mn];
int n;
bool b[mn];//記錄是否被刪除
int main(){
    cin>>n;
    go(i,1,n,1){
        cin>>a[i];
        b[i]=true;
    }
    go(i,1,n,1){
        if(b[i]){//是否被刪除
            if(a[i]=='a'||a[i]=='e'||a[i]=='o'||a[i]=='i'||a[i]=='u'||a[i]=='y'){//判斷是不是母音
                go(j,i+1,n,1){
                    if(a[j]=='a'||a[j]=='e'||a[j]=='o'||a[j]=='i'||a[j]=='u'||a[j]=='y'){//迴圈看有沒有連續的母音
                        b[j]=false;
                    }else{//只要有不是的,直接退出小迴圈,尋找下一組母音
                        break;
                    }
                }
            }
        }
    }
    go(i,1,n,1){
        if(b[i]){
            cout<<a[i];
        }
    }
    return 0;
}