zoukankan      html  css  js  c++  java
  • POJ 1850 Code

      早晨有点迷糊,读错题WA了一次,然后又CE了一次.....

      给出一个字符串  均为小写字母 且 长度   <= 10

      若给出的字符串可编码则输出对应数字,否则输出0.

      可编码的要求为:字母的字典许从左到右一次增大。

      设len为字符串长度,i 为对应字母,f[][] 为 长度为len 首字母为 i 是 的情况 ,则有:

      当 len = 1 时  f[1][i] = 1;

      当 len = 2 时  f[2][i] = 26-i;

      当 len >= 3 时   f[len][i] = f[len-1][i+1] +……+f[len-1][26-len+1];

      统计时先统计比给出字符串长度短的情况,然后统计与其长度相等的情况。

      

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cmath>
     6 
     7 #define LL unsigned long long
     8 
     9 using namespace std;
    10 
    11 char num[12];
    12 LL ans[12][28];
    13 
    14 void init()
    15 {
    16     LL i,j,k,sum;
    17 
    18     for(i = 1; i <= 26; ++i)
    19         ans[1][i] = 1;
    20     for(i = 1; i <= 25; ++i)
    21         ans[2][i] = 26 - i;
    22 
    23     for(i = 3; i <= 10; ++i)
    24     {
    25         for(j = 1; j <= 27-i; ++j)
    26         {
    27             for(sum = 0,k = j+1; k <= 28-i; ++k)
    28             {
    29                 sum += ans[i-1][k];
    30             }
    31             ans[i][j] = sum;
    32         }
    33     }
    34 }
    35 
    36 int main()
    37 {
    38     init();
    39     cin>>num;
    40 
    41     LL sum,tsum,len,i,j;
    42 
    43     for(i = 1,len = strlen(num); i < len; ++i)
    44     {
    45         if(num[i] <= num[i-1])
    46         {
    47             cout<<"0"<<endl;
    48             return 0;
    49         }
    50     }
    51 
    52 
    53 
    54     sum = 0;
    55 
    56     for(i = 1,len = strlen(num); i < len; ++i) //统计小于len的情况
    57     {
    58         for(j = 27-i; j >= 1; --j)
    59             sum += ans[i][j];
    60     }
    61 
    62     for(i = 0; i < len; ++i)
    63     {
    64         tsum = 0;
    65         for(j = (i == 0 ? 1 : num[i-1] - 'a' + 2); j < num[i]-'a' + 1; ++j)
    66         {
    67             tsum += ans[len-i][j];
    68         }
    69 
    70         sum += tsum;
    71     }
    72     ++sum;
    73     cout<<sum<<endl;
    74 
    75     return 0;
    76 }
    View Code
  • 相关阅读:
    Quartz入门例子简介 从入门到菜鸟(一)
    初识Quartz之第一个Quartz实例
    @DisallowConcurrentExecution 注解的作用 【定时器执行完当前任务才开启下一个线程的方式】
    no identities are available for signing
    Unity3D研究院之在把代码混淆过的游戏返混淆回来
    安沃广告问题
    IOS 接ShareSDK问题
    网页中插入Flvplayer视频播放器代码
    unity Android 打包后读取 xml 文件
    unity3d 下操作excel 与打印
  • 原文地址:https://www.cnblogs.com/zmx354/p/3308070.html
Copyright © 2011-2022 走看看