天天看點

牛客小白月賽3

A:每次讀取一行字元串,從頭到尾枚舉,判斷這個字母應該變為哪一個字母,然後直接替換并輸出即

可。

#include<iostream>
#include<cstdio>
#include<string.h>
#include<stdio.h>
using namespace std;
char str[200000];
int main()
{
    while(gets(str))
    {
        int i;
        for(i=0;str[i]!='\0';i++){
            if(str[i]<'e') str[i]='a';
            else if (str[i]<'i') str[i]='e';
            else if (str[i]<'o') str[i]='i';
            else if (str[i]<'u') str[i]='o';
            else if (str[i]<'y') str[i]='u';
            else str[i]='y';
        }
        puts(str);
    }
    return 0;
}
           

B:動态規劃

#include <iostream>  
#include <cstdio>  
#include <cstring>  
#include <string>  
#define ll long long  
#define mod 2000120420010122  
using namespace std;  
string str;  
ll dp[5];  
  
int main()  
{  
  while(cin>>str){  
    int len = str.length();  
    memset(dp,0,sizeof(dp));  
    for(int i=0;i<len;i++){  
      str[i] = tolower(str[i]);  
      dp[1] = (dp[1] + (str[i] == 'c')) % mod;  
      dp[2] = (dp[2] + (str[i] == 'w') * dp[1]) % mod;  
      dp[3] = (dp[3] + (str[i] == 'b') * dp[2]) % mod;  
      dp[4] = (dp[4] + (str[i] == 'c') * dp[3]) % mod;  
    }  
    cout<<dp[4]<<endl;  
  }  
  return 0;  
}