• Atcoder Grand Contest 037A(贪心,思维)


    #include<bits/stdc++.h>
    using namespace std;
    string s;
    char ans[200007][7];
    char anss[200007][7];
    int main(){
    cin>>s;
    int n=s.size();
    int sta=0;
    int cnt=1;
    int flag=0;
    ans[cnt][0]=s[0];
    //把字符串分割成一个字符,两个字符,一个字符,两个字符。。。
    //因为前后字符数量不一样,所以肯定不相同。如果这个字符和上一个不一样,就分割成一个字符,一个字符,一个字符。。。
    for(int i=1;i<n;++i){
    if(s[sta]==s[i]&&flag==0){//当这个字符和前一个一样时
    if(i+1<n){//如果后面还有字符,就把这两个字符放在一段
    cnt++;
    flag=1;
    i++;
    ans[cnt][0]=s[i-1];
    ans[cnt][1]=s[i];
    }
    else if(i==1)//如果后面没有字符,就把这个字符和前一段合并,当前面没有字符时,就和上一个字符合并,此时就会少一段,例如s=aa
    cnt--;
    }
    else if(s[sta]!=s[i]&&flag==0){
    cnt++;
    sta=i;
    ans[cnt][0]=s[i];
    }
    else if(flag==1){
    cnt++;
    sta=i;
    flag=0;
    ans[cnt][0]=s[i];
    }
    }
    cout<<cnt;
    return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    kvm克隆虚拟机
    vSAN添加license
    KVM虚拟机快照
    第二次作业及总结——数据类型和运算符
    第二次作业心得
    做完c语言作业的心得
    介绍自己
    awk数组 Jazz
    Java入门第一阶段总结
    区间dp入门+例题
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11371490.html
Copyright © 2020-2023  润新知