http://poj.org/problem?id=1850   -----------------http://poj.org/problem?id=1496    两题解法类似。。
本题为组合数学的题,要求所给字符串在排列中的位置。所用的方法为暴力枚举。
对于长度为1的字符串有a,b,c,d.......26个;
长度为2的字符串有 a开头时有ab,ac,ad,ae,af.....(25,1) 25个 //()为组合数
         b开头时有bc,bd,de,.....(24,1) 24个
         c开头时有cd,ce,cf。。。(23,1) 23个
         。。。。。。。
          y开头时有yz (1,1) 1个。
所以长度为2的字符串共有 (25,1)+(24,1)+(23,1)+(22,1)。。。。=(26,2);
同理 长度为3时 共有 (26,3)个; 长度为4时有(26,4)个。。。。。 对于长度小于所给字符串的串,,直接相加即可,。。而对于长度等于所给字符串的串需要挨位枚举。。
例如:对于所给串为 dghei 长度等于它的串的个数应这样枚举:
    第一位,应从‘a’开始一直枚举到‘c’,,,但是对于‘a’来说 还有‘z’-‘a’个比‘a’大的字符,后边还有4个位置空着,所以仅对于这一位来说是((‘z’-‘a’),4);
    第二位, 应从比‘d’的字符开始枚举,因为题目要求是非降序列。。其他类似。。。 1 #include<iostream>
#include<cstring>
using namespace std;
int c[][];
int main(){
for(int i=;i<=;i++)//初始化。。
for(int j=;j<=;j++){
if(!j||i==j)
c[i][j] = ;
else
c[i][j] = c[i-][j-]+c[i-][j];
}
c[][] = ;
char str[];
while(cin>>str){
int len = strlen(str);
for(int i=;i<len;i++){
if(str[i]<=str[i-]){
cout<<<<endl;
return ;
}
}
int sum = ;
for(int i=;i<len;i++)//比所求字符串短的字符串
sum += c[][i];
//枚举字符串的每一位
for(int i=;i<len;i++){
char cu = !i?'a':str[i-]+;//如果是第一位,就从‘a’开始枚举改位的取值,其余的从比前一位大1的位置开始
while(cu<=str[i]-){
sum+= c['z'-cu][len-i-];//剩余的字母数记为‘z’-cu,而还需要选len-(i+1)个
cu++;//继续枚举,直到仅比改为小1;
}
}
sum += ;//加上该字符串本身,,因为之前最大就到该位-1
cout<<sum<<endl;
}
return ;
}

poj 1850/poj 1496的更多相关文章

  1. POJ 1496 POJ 1850 组合计数

    Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8256 Accepted: 3906 Description Tran ...

  2. 【POJ 1850】 Code

    [POJ 1850] Code 还是非常想说 数位dp真的非常方便! !. 数位dp真的非常方便!.! 数位dp真的非常方便! !! 重要的事说三遍 该题转换规则跟进制差点儿相同 到z时进一位 如az ...

  3. POJ 1850 Code(组合数)

    http://poj.org/problem?id=1850 题意 :给定字符串,系统是用字符串组成的,字符串是按字典序排的.编码系统有三条规则,1这些的单词的长度是由小到大的,2相同长度的按字母在字 ...

  4. poj 1850 code(组合数学)

    题目:http://poj.org/problem?id=1850 题意:按给定的规则给字母编号. 一个很简单的题目,但是却做了好久.................................. ...

  5. POJ 1850 Code

    组合数学.... Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7202 Accepted: 3361 Descrip ...

  6. Code(poj 1850)

    大致题意:(与POJ1496基本一致) 输出某个str字符串在字典中的位置,由于字典是从a=1开始的,因此str的位置值就是 在str前面所有字符串的个数 +1 规定输入的字符串必须是升序排列.不降序 ...

  7. POJ 1850 Code 字符串 难度:1

    题意: 1 如果是严格升序的字母字符串,那么可以输出非0解码,否则不能译码输出0 2 字符串解码 遵循递增原则,其值为 到现在为止的所有按字母序小于该字符串的数量 + 1; #include < ...

  8. POJ 1850

    #include <iostream> #include <string> using namespace std; int fac(int num); int C(int n ...

  9. poj 1850 1019 (简单位数dp)

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; ][],l,a ...

随机推荐

  1. 关于mysqli 连接数不能正确释放的解决方案

    /** * 析构函数 */ //解决重复链接的问题 private $db_handler = null; function __destruct() { Log::logWrite($this-&g ...

  2. 精通 VC++ 实效编程280例 - 01 窗口

    窗口是屏幕上的一个矩形区域.窗口分为3种:重叠窗口.弹出窗口和子窗口.每个窗口都有由系统绘制的“非客户区”和应用程序绘制的“客户区”.在 MFC 中,CWnd 类为各种窗口提供了基类. 1 通过 HW ...

  3. C#实现 ffmpeg视频转码、播放

    近来公司项目要求实现全景相机的视频截取,但是截取的视频需求转码上传.经过研究采用ffmpeg转码,奉上一个详细介绍的博文: 最简单的基于FFMPEG的转码程序 主要是转码的操作过程,能够实现了从相机获 ...

  4. java中的集合链表

    java中的集合类有很多种,每个都有自己的一些特点,推荐你专门在这方面研究一下,比方Vector,ArrayList,,LinkedList,Hashtable等,其中你问到的链表,是不是指Linke ...

  5. css学习笔记四

    广州天气变冷了,css学习笔记还是要总结. 总结: 1:几米页面静态页面主要是一列结构头部banner图,mainbody部分放文字内容和图书图片,底部是页面的版权信息 2:腾讯软件中心静态页面制作( ...

  6. MZL's xor

    MZL's xor Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other) Total Sub ...

  7. linux之多进程fork:进程通信

    ++++++++++++++++++信号机制+++++++++++++++++++ 接收信号 int signal(int sig,__sighandler_t handler); int func( ...

  8. 通过浏览器直接打开Android应用程序

    需求 通过手机浏览器直接打开Android应用程序.假设本地已经安装了指定Android应用,就直接打开它:假设没有安装,则直接下载该应用的安装文件(也能够跳转到下载页面). 实现效果 假设手机上已经 ...

  9. ios即时通讯客户端开发之-mac上基于XMPP的聊天客户端开发环境搭建

    1.搭建服务器  -  安装顺序 - (mysql->openfire->spark) 数据库:mysql 服务器管理工具: openfire 测试工具: spark mysql 安装 h ...

  10. 如何将 MFC ActiveX 控件标记为安全,脚本和初始化

    MSDN原文.ActiveX控件标记安全(可以不仅仅是MFC ActiveX) 概要 默认情况下,MFC ActiveX 控件未标记为对脚本编写是安全的和对初始化是安全的.控制运行在 Internet ...