zoukankan      html  css  js  c++  java
  • poj1850

    是因为我好久不刷题了吗,这个题竟然做了俩小时,好几个思路都被推翻

    用dp数组预处理出范围是a->a+x字符y长度有多少种递增串

    然后例如def首先求a__有多少种情况那么自然后面就是只有b即dp[2][25],再求b__的情况c__,ab__,ac__.......

    然后求字符串长度小于输入长度的情况

    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    const int maxa = 100;
    char str[maxa];
    int dp[10][30];
    int main(){
        for(int i = 0; i < 10; i++){
            for(int k = 0; k <= 26; k++){
                if(i == 0) dp[i][k] = 1;
                else for(int j = 0; j < k; j++)dp[i][k] += dp[i-1][j];
               /// cout<<dp[i][k]<<" ";
            }
        //puts("");
        }
        char str[12];
        while(scanf("%s", str)!=EOF){
            int ok = 0;
            for(int i = 1; str[i]; i++){
                if(str[i] <= str[i-1])
                    ok = 1;
            }
            if(ok){
                cout<<0<<endl;continue;
            }
            int n = strlen(str);
            int ans = 1;
            for(int i = 0; str[i]; i++){
                for(int k =i == 0?0:str[i-1]-'a'+1; k < str[i]-'a'; k++){
                    ans += dp[n-1-i][25-k];
                }
            }
            int m = 26;
            //cout<<ans<<endl;
            for(int i = 0; i < n-1; i++){
                ans += dp[i+1][25+1];
            }
            cout<<ans<<endl;
        }
    }
    View Code
  • 相关阅读:
    DOM-window下的常用子对象-location-刷新页面
    row_number over( partition by xx)
    linux openjdk安装
    ffmpeg直播系统
    flink 基本原理
    flink分层 api
    flink测试用例编写
    使用mybatis的动态sql解析能力生成sql
    大数据量显示问题
    vue使用日记
  • 原文地址:https://www.cnblogs.com/icodefive/p/4260088.html
Copyright © 2011-2022 走看看