/*
n个字符长度为m的字符串个数C(n,m)
因为字符串要求是升序的,所以字符确定,字符串序列也就相应确定
例如,abcd四个字符长度为2的字符串个数为6,ad对应的字符串序列是ad
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NUM 27
#define LENGTH 11
int tab[NUM][NUM];
//杨辉三角
void yanghui_table()
{
int i,j;
memset(tab,0,sizeof(tab));
for(i=0; i<NUM; ++i)
{
tab[i][0]=1;
tab[i][i]=1;
for(j=1; j<i; ++j)
{
tab[i][j]=tab[i-1][j-1] + tab[i-1][j];
}
}
}
int main(int argv,char ** argvc)
{
int i,j,len,sum;
char str[LENGTH],ch;
yanghui_table();
gets(str);
len = strlen(str);
//判断是否是升序
for(i=1; i<len; ++i)
{
if(str[i]<=str[i-1])
{
printf("0\n");
return 0;
}
}
sum = 0;
//求字符串长度小于str的字符串个数
for(i=1; i<len; ++i)
{
sum += tab[26][i];
}
//求字符串长度等于str并在其前面的字符串个数
for(i=0; i<len; ++i)
{
ch = i==0?'a':str[i-1]+1;
while(ch<str[i])
{
sum += tab[25+'a'-ch][len-i-1];
ch++;
}
}
printf("%d\n",sum+1);
return 0;
}
分享到:
相关推荐
组合数学 ACM 和,POJ里用到组合数学的题目
北大POJ1850-Code 解题报告+AC代码
北大POJ初级-数学 解题报告+AC代码
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
2505 2521 2538 2546 2551 2590 2593 2601 2665 2680 2739 2752 2761 2762 2777 2800 2891 2893 2992 3030 3041 3132 3159 3187 3204 3270 3277 3281 3297 3321 3414 3436 3461 3650 3663 3664 3672 3740
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
poj分类poj分类poj分类poj分类
北大POJ1159-Palindrome 解题报告+AC代码
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告
poj 1659解题报告poj 1659解题报告poj 1659解题报告poj 1659解题报告
POJ1503解答 POJ1503解答,正确答案(已通过POJ)
POJ1048,加强版的约瑟夫问题 难度中等
北大POJ2002-Squares 解题报告+AC代码
POJ1083的代码,POJ1083的代码,POJ1083的代码
poj 百练 题目分类 poj 百练 题目分类
poj 1001答案