博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1850 code
阅读量:7183 次
发布时间:2019-06-29

本文共 754 字,大约阅读时间需要 2 分钟。

这里写图片描述

首先应该判断一下给出的字符串是否为升序,否则答案为0.

对于长度为L的一串,我们首先应该加上比它短的串的个数,然后再算它是长度为L的里面的第几个。
在算长度为len的串的个数的时候,因为都是升序的,特定的几个字符组成的串没有重复,所以我们可以
用组合数来算,个数为C(26,len)。
然后再算它是长度为L的串的第几个时,一位一位地算,举个例子吧。
c f j l 对于这个串,s[0]为c,那么我们先把长度为四以a~b开头的个数加上,以a开头的为C(25,3)个,
以b开头的为C(24,3)个;然后我们再算以c开头,以s[0]+1~e为第二位的个数,即C(22,2)+C(21,2)……
以此类推,当我们算到最后一位之后,以为我们算的都是它前面的个数,所以最后答案再加 1 。
里面有很多细节,具体看代码吧。

#include
#include
#include
#include
#define LL long longusing namespace std;char s[50];LL ans,L;LL yh[30][30];void work(){ for(int i=0;i
=0) d=s[i-1]-'a'+2; else d=1; for(int j=d;j
>s;L=strlen(s); for(int i=1;i

转载于:https://www.cnblogs.com/dfsac/p/7587874.html

你可能感兴趣的文章
sklearn 多项式回归
查看>>
iOS__播放mp3文件根据光线传感器设置外置或者听筒播放
查看>>
JS数组
查看>>
python(1)汇率换算
查看>>
spring cloud微服务分布式云架构- Config 快速开始
查看>>
十一课堂|通过小游戏学习Ethereum DApps编程(1)
查看>>
【区块链+游戏实践】火币区块链产业专题报告-游戏产业的割裂与重构
查看>>
批量删除Maven下载失败的文件及文件夹
查看>>
前端学习是个无底洞,要给自己一个定位
查看>>
使用 ELK 来分析你的支付宝账单
查看>>
[Android] 列表控件(RecycleView,GridView)
查看>>
vue源码阅读,学习vue的rollup打包工具,write一个自己的工具函数库
查看>>
主流 SSM 框架Java 后台 springmvc mybatis 有代码生成器
查看>>
vue点击当前路由,如何实现刷新当前页
查看>>
iOS 常用布局方式之Constraint
查看>>
初识zookeeper和安装
查看>>
test
查看>>
【Camera专题】-Camera帧率、黄光环境下拍照闪红问题-【展讯平台】
查看>>
Android NDK 环境搭建 之 起始篇NDK HelloWorld
查看>>
this指向问题
查看>>