大致题意:(与POJ1496基本一致)

输出某个str字符串在字典中的位置,由于字典是从a=1开始的,因此str的位置值就是 在str前面所有字符串的个数 +1

规定输入的字符串必须是升序排列。不降序列是非法字符串

不要求用循环输入去输入若干组字符串,但若输入非法字符串则输出0,且结束程序,这是和POJ1496最猥琐的区别,很多同学只注意到规定str的长度不同,以为把str数组长度改一下直接复制就能AC再多刷一题了,殊不知老是WA却找不到原因,大概就是这里出问题了

本题Str最长为10个字符

//数位DP   f[i][j]:以i开头的长度为j的个数
#include<cstdio>
#include<iostream>
#include<cstring>
#define M 30
using namespace std;
int f[M][M],a[M];
char c[M];
void F()
{
for(int i=;i<=;i++)
f[i][]=;
for(int j=;j<=;j++)
for(int i=;i<=;i++)
for(int k=i+;k<=;k++)
f[i][j]+=f[k][j-];
}
int main()
{
scanf("%s",c);
int len=strlen(c),flag=;
for(int i=;i<=len;i++)
{
a[i]=c[i-]-'a'+;
if(a[i]<a[i-])flag=;
}
if(flag)
{
printf("");
return ;
}
F();
int ans=;
for(int i=;i<=;i++)//求出前len-1位的个数
for(int j=;j<len;j++)
ans+=f[i][j];
//当到第i位时,字母一定比i-1大且比实际的小
for(int i=;i<=len;i++)
for(int j=a[i-]+;j<a[i];j++)
ans+=f[j][len+-i];
printf("%d",ans+);//加上它自己
return ;
}

最新文章

  1. archlinux 加载loop模块,且设定loop设备个数
  2. openstack资料相关
  3. java notepad++
  4. JDK 1.5 1.6 override区别
  5. 高质量图形库:pixellib
  6. Spring三种实例化Bean的方法
  7. 【技术贴】Maven打包文件增加时间后缀
  8. Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】
  9. ios蓝牙开发(一)蓝牙相关基础知识
  10. jstl的表达式不能解析
  11. 玩转Spring MVC(三)----spring基本配置文件
  12. ZD6转辙机
  13. 解决ssh连接问题2
  14. Java8新特性interface中的static方法和default方法
  15. androidpn 推送系统
  16. bootstrape学习
  17. 存根类(stub) 是什么意思?有什么作用?(转)
  18. .NET设计模式 第二部分 创建型模式(2)—抽象工厂模式(Abstract Factory)
  19. python 文件目录遍历
  20. golang martini 源码阅读笔记之martini核心

热门文章

  1. 【基础语法】a++与++a的区别
  2. Ubuntu学习总结-01 用VMware 8安装Ubuntu 12.04详细过程
  3. MVC区域 视图必须派生自 WebViewPage 或 WebViewPage&lt;TModel&gt;
  4. MyEclipse------如何添加jspsmartupload.jar+文件上传到服务器
  5. Java Web文件上传
  6. iOS欢迎界面Launch Screen动态加载广告
  7. localdb链接字符串
  8. [PHP]array_map与array_column之间的关系
  9. Strust的基础情况
  10. c++实现加密和解密算法以及JNI技术的应用实例