poj1850 Code

题意:输出若干个给定的字符串($length<=10$)在字典序中的位置,字符串中的字母必须严格递增。

读取到非法字符串时,输出“0”,终止程序。(poj1496:继续读取)

我们分成2种情况讨论字典序小于给定字符串的字符串个数

1.长度比给定字符串小

其实长度为$i$的字符串的个数就是$C(26,i)$

因为我们随机选取$i$个字符后,从小到大依次取出,是可以保证字符串是有序的。

2.长度等于给定字符串

我们枚举每一位,计算从该位开始小于给定字符串的个数,同样可以用组合数计算。

预处理组合数一下........

 #include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
char a[];
int C[][];
int main(){
for(int i=;i<=;++i)
for(int j=;j<=i;++j)//组合数预处理
C[i][j]=(!j||i==j)?:C[i-][j]+C[i-][j-];
while(cin>>a){//用scanf就OLE(大雾)
int len=strlen(a),ans=; bool flag=;
for(int i=;i<len;++i)
if(a[i]<=a[i-]){
printf("0\n");
flag=; break;
}
if(flag) continue;//1850改为return 0;
for(int i=;i<len;++i) ans+=C[][i];//长度<len
for(int i=;i<len;++i){//长度==len,字典序排名在给定串前,枚举每一位
for(char ch=i?a[i-]+:'a';ch<a[i];++ch)//枚举每个小于a[i]的字母
ans+=C['z'-ch][len-i-];
}printf("%d\n",ans);
}return ;
}

poj1496/poj1850 Code

poj1496 Word Index / poj1850 Code(组合数学)的更多相关文章

  1. POJ1850——Code(组合数学)

    Code DescriptionTransmitting and memorizing information is a task that requires different coding sys ...

  2. POJ 1496 Word Index

    组合数学....和上一题是一样的.... Word Index Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4303 Acce ...

  3. poj1850 Code【组合数学】By cellur925

    题意: * 按照字典序的顺序从小写字母 a 开始按顺序给出序列 (序列中都为升序字符串)* a - 1* b - 2* ...* z - 26* ab - 27* ...* az - 51* bc - ...

  4. Code(组合数学)

    Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8766 Accepted: 4168 Description Tran ...

  5. poj1850 Code

    Code Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10059   Accepted: 4816 Description ...

  6. POJ 1850:Code 组合数学

    Code Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8710   Accepted: 4141 Description ...

  7. Discuz! x3.1 /utility/convert/index.php Code Execution Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Discuz! x3.1的插件/utility/convert/inde ...

  8. poj:1850 Code(组合数学?数位dp!)

    题目大意:字符的字典序依次递增才是合法的字符串,将字符串依次标号如:a-1 b-2 ... z-26 ab-27 bc-52. 为什么题解都是组合数学的...我觉得数位dp很好写啊(逃 f[pos][ ...

  9. POJ1850 Code(组合+康托展开)

    题目问一个合法字符串的字典序是第几个,合法的字符串是指里面的字符严格递增. 先判断合不合法,然后用类似康托展开的过程去求.大概过程就是用组合数算出某长度某前缀有几个,累加起来. 真难一遍写对.. #i ...

随机推荐

  1. Python做简单爬虫(urllib.request怎么抓取https以及伪装浏览器访问的方法)

    一:抓取简单的页面: 用Python来做爬虫抓取网站这个功能很强大,今天试着抓取了一下百度的首页,很成功,来看一下步骤吧 首先需要准备工具: 1.python:自己比较喜欢用新的东西,所以用的是Pyt ...

  2. HTTP/2笔记之消息交换

    前言 无论是HTTP/1.*还是HTTP/2,HTTP的基本语义是不变的,比如方法语义(GET/PUST/PUT/DELETE),状态码(200/404/500等),Range Request,Cac ...

  3. 关于layer.photos即照片显示的问题。

    在layer组件中,照片显示是不常用,今天做了一些不伤了. 在这里写出来,以备后用. 其中注意几个问题, 1.格式问题. 2.路径问题. 不同的layer有不同的格式,查看layerAPI中发现的格式 ...

  4. sencha touch 入门系列 (三)sencha touch 项目创建

    通过上一章节的学习,我们的开发环境已经配置好了,接下来我们开始创建第一个sencha touch的项目,网络上很多sencha touch的教程都是手动搭建项目的, 不过手动搭建的项目缺少一些senc ...

  5. MarkDownPad2 key

    MarkDownPad2 key : Soar360@live.com GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVp ...

  6. Jquery Uploadify使用参数详解

    开始上传  $('#uploadify_1').uploadifyUpload(); 1 uploader uploadify.swf文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击 ...

  7. Spark-RDD算子

    一.Spark-RDD算子简介 RDD(Resilient Distributed DataSet)是分布式数据集.RDD是Spark最基本的数据的抽象. scala中的集合.RDD相当于一个不可变. ...

  8. Git入门基本操作

    由David发表在天码营 Git简介 Git不仅仅是实际项目开发中进行代码管理的神器,也是你在天码营学习需要掌握的工具. Git是一种代码版本控制工具.我们在实际项目中和天码营的学习过程中都会产生大量 ...

  9. mysql 数据操作 单表查询 where约束 between and or

    WHERE约束 where字句中可以使用: 比较运算符:>< >=  <=  != between 80 and 100 值在80到100之间   >=80  <= ...

  10. C#基础整理(一)

    1.什么是.net? .net有.net平台和.Net Framework框架. .net平台是包含.net framework框架. framework框架提供稳定的运行环境来保证基于.Net平台开 ...