您的位置:首页 > 其它

poj 1850-code解题报告

2012-05-29 23:53 211 查看
利用组合数学的一道题,对于一个序列先找长度比这个序列短的序列个数,再找长度相同的序列的个数

View Code

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int c[30][30];
char s[15];
int main()
{
int i,len,j,code;
c[0][0]=1;
for(i=1;i<=26;i++)
for(j=0;j<=i;j++)
c[i][j]=j?c[i-1][j-1]+c[i-1][j]:1;
scanf("%s",s);
len=strlen(s);
for(i=0;i<len-1;i++)//注意这里要直接结束
{
if(s[i]>=s[i+1])
{
printf("0\n");
return 0;
}
}
code=1;
for(i=1;i<len;i++)
code+=c[26][i];
for(i=0;i<len;i++)
{
char t=i?s[i-1]+1:'a';
for(;t<=s[i]-1;t++)
code+=c['z'-t][len-1-i];
}
printf("%d\n",code);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: