poj 1850
来源:互联网 发布:源码投稿 编辑:程序博客网 时间:2024/04/28 15:21
题意:这个题就是给你一个序列a,b,c,d,e,f.............z,ab,.........az,bc,......vwxyz
1,2,3,4,5,6 26,27...... 51,52 83681
然后给你一个序列问你这个序列是第几个序列
下面看思路:
说这道题之前我先说一个神奇的东西,我们先来看一下杨辉三角
1
1 1
1 2 1
1 3 3 1
下面的我就不写了
我们可以发现他们每个值对应的xy坐标用组合来选择正好是对应的例如C2/2整好是1,C3/1整好是3
所以以后写组合的值我们可以用杨辉三角来打表
下面不墨迹解题:这道题 我们要分两步来求 先求出来从第一个到它这个长度的第一个中间有多少个,比如我们要求
vwxyz 我们需要先求出a到abcde之间有多少个然后再求出abcde到vwxyz之间有多少个
我们先来解决第一步:我们先看啊一位总共有C26/1个 两位有C26/2个 所以第一步我们就很容易解决了
第二步:我在程序中已经有明确说明下面看程序吧
#include<functional>#include<algorithm>#include<iostream>#include<fstream>#include<sstream>#include<iomanip>#include<numeric>#include<cstring>#include<cassert>#include<cstdio>#include<string>#include<vector>#include<bitset>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<list>#include<set>#include<map>using namespace std;int c[33][33] = {0};int bin[35]; //这个是用来存储最大内个二进制数的void zuhe(){ for(int i = 0;i < 33;i++) { for(int j = 0;j <= i;j++) { if(j == 0||i == j) { c[i][j] = 1; } else { c[i][j] = c[i - 1][j - 1] + c[i - 1][j]; } } } return;}int main(){ char str[11]; zuhe(); int i; while(~scanf("%s",str)) { int len = strlen(str); for(i = 1;i < len;i++) { if(str[i - 1] >= str[i]) //如果输入的不合理我们就直接结束比如aab ba { printf("%d\n",0); return 0; } } int sum = 0; for(i = 1;i < len;i++) //这个地方就是求出从a到它的位数的 第一个中间有多少个 { sum = sum + c[26][i]; } for(i = 0;i < len;i++) //i就是指出这个字符串中的第几个字母 { char ch = (!i)?'a':str[i - 1] + 1; //因为每一位的字母都是递增的 所以我们要从上一位加1开始 while(ch <= str[i] - 1) //这一位还要小于下一位 { sum = sum + c['z' - ch][len - i - 1]; //因为比ch小的字母不能用了 所以还剩下‘z’ - ch个字母 在这些中选出len - i - 1个 ch++; } } printf("%d\n",sum + 1); //因为我们之前算的是在给的字母之前有多少个 我们还得把给的这个字母算上所以+1 } return 0;}
0 0
- poj 1496 poj 1850
- poj 1850 poj 1496
- poj 1850
- poj 1850
- poj 1850
- poj-1850
- POJ 1850
- poj 1850
- poj 1850
- poj 1850
- POJ 1496 Word Index || POJ 1850 Code
- POJ 1850 Code POJ 1496 Word Index
- POJ 1496 POJ 1850 组合计数
- poj 1496&1850
- poj 1850 Code
- poj 1850 Code
- POJ 1496 1850
- poj 1850 code
- AppNinja 开发手记6: 编译 xnu-2050 内核,并用红雪启动内核
- java之生成jar包
- etmvc框架介绍
- memmove和memcpy
- JDK和SVN,究竟谁的错?
- poj 1850
- 哈尔滨东北赛总结
- Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!
- 用OpenGL构建粒子喷泉
- 将map自动转化为xml报文
- Mantle 初步使用
- 输出当前时间和随机数
- PEPsal分析
- 【LeetCode】002.Add Two Numbers