zoukankan      html  css  js  c++  java
  • CDOJ 1502 string(简单贪心)

    题目大意:原题链接

    相邻两个字母如果不同,则可以结合为前一个字母,如ac可结合为a.现给定一个字符串,问结合后最短可以剩下多少个字符串

    解体思路:简单贪心

    一开始读题时,就联想到之前做过的一道题,从后往前贪心(关键),假设dp[i]表示从第i个字符开始到末尾结合后最短可以剩下的字符串数目.

    然后拿笔在纸上画了画,发现果然是正确的.最后只要输出dp[0]即可.

    好开心,从读题到AC总共不超过10分钟,傻逼了,刚开始误写为dp[sz-1]=0; 

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        string s;
        cin>>s;
        int dp[200010];
        memset(dp,0,sizeof(dp));
        int sz=s.size();
        dp[sz-1]=1;
        for(int i=sz-2;i>=0;i--){
            if(s[i]==s[i+1]) dp[i]=dp[i+1]+1;
            else dp[i]=1;
        }
        printf("%d
    ",dp[0]); 
    } 
  • 相关阅读:
    Java8新特性学习笔记(一) Lambda表达式
    android游戏动画特效的一些处理
    start from here
    感知机回归
    2020/2/21
    梯度下降
    凸优化
    批量归一化和残差网络
    Momentum
    词嵌入基础
  • 原文地址:https://www.cnblogs.com/freinds/p/6498729.html
Copyright © 2011-2022 走看看