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. Noip2013心态调整

    决定成绩的,很多时候可能不是实力,而是心态,一年走来,承受着一次次失败,怀疑,背负着希望与压力,突然发现,只有拥有过,失去过,才可以真正去超越,我希望完成我的梦想,但是唯有放下梦想,才可以走向它. 心 ...

  2. java对象的比较分析

    关于对象的比较我们可以通过以下三种手段来实现 一.利用"=="比较引用 Java中,当比较简单类型变量时用"==",只要两个简单类型值相等即返回ture,否则返 ...

  3. poj 2406 Power Strings(KMP变形)

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 28102   Accepted: 11755 D ...

  4. python 类属性、对象属性

    类的普通属性: dir(Myclass), 返回一个key列表: Myclass.__dir__,返回一个字典: 1.类的数据属性: 2.类的方法: 类的特殊属性: 1.Myclass.__name_ ...

  5. .NET 多语言支持解决方案 (转)

    asp.net 2.0中的App_GlobalResources可以用来解决本地化的问题,程序会根据浏览器的语言首选项自动判断显示出本地化的界面. 首先在App_GlobalResources新建re ...

  6. ios开发学习笔记(1)

    objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...

  7. SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。

    整个流程 Step 1 放置一个FTP Task 将远程文件复制到本地 建立FTP链接管理器后 Is LocalPatchVariable 设置为Ture 并创建一个变量设置本地路径 Operatio ...

  8. jquery+easy ui 实现表格列头筛选

    示例代码 1.筛选的下拉 <a href="javascript:void(0)" id="filterStatus" class="easyu ...

  9. Android UiAutomator 自动化测试一些代码实例---新手3

    1.打开浏览器,打开百度实例 public void testBrowser() throws RemoteException, UiObjectNotFoundException{ //灭屏幕-亮屏 ...

  10. nginx 重写 rewrite 基础及实例(转)

    nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配 -f和!-f用来判断是否 ...