zoukankan      html  css  js  c++  java
  • Code POJ

      题意 :字符串从a=1 b=2 c=3....z=26  ab=27开始编号 每个都是升序的 给出字符串问是几号

      思路:主要是要看n位字符串有多少个 这里需要用组合数学的思想  组合数用杨辉三角形递推出

      参考:https://blog.csdn.net/lyy289065406/article/details/6648492

    然后就没有什么难度了

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 const int maxn=3e5+5;
     5 char s[maxn];
     6 int c[50][50];
     7 void init(){
     8     c[0][0]=0;
     9     for(int i=0;i<=26;i++){
    10         for(int j=0;j<=i;j++){
    11             if(!j||i==j){
    12                 c[i][j]=1;
    13             }
    14             else {
    15                 c[i][j]=c[i-1][j-1]+c[i-1][j];
    16             }
    17         }
    18     }
    19 }
    20 int main(){
    21     int n;
    22     init();
    23     char s[20];
    24     while(scanf("%s",s)==1){
    25         int len=strlen(s);
    26         bool flag=0;
    27         for(int i=0;i<len-1;i++){
    28             if(s[i]>=s[i+1]){
    29                 printf("0
    ");
    30                 flag=1;
    31                 break;
    32             }
    33         }
    34         if(!flag){
    35             int sum=0;
    36             for(int i=1;i<len;i++){
    37                 sum+=c[26][i];
    38             }
    39             for(int i=0;i<len;i++){
    40                 char ch=(!i)?'a':s[i-1]+1;
    41                 while(ch<=s[i]-1){
    42                     sum+=c['z'-ch][len-1-i];//选了c后剩下的位置能选多少个 用组合数
    43                     ch++;
    44                 }
    45             }
    46             printf("%d
    ",sum+1);
    47         }
    48 
    49     }
    50 
    51     return 0;
    52 }
  • 相关阅读:
    进程与线程
    Socket函数编程(二)
    socket编程
    subprocess 模块
    异常处理
    模块与包
    【Java基础】String源码分析
    【MySQL】 执行计划详解
    【MySQL】performance schema详解
    【Spring Cloud-Open Feign】使用OpenFeign完成声明式服务调用
  • 原文地址:https://www.cnblogs.com/ttttttttrx/p/10264951.html
Copyright © 2011-2022 走看看