POJ 1496 Word Index (组合数学 求字符串对应编码)

来源:互联网 发布:seo服务cao4 编辑:程序博客网 时间:2024/05/24 22:42

题目链接

POJ1496

分析

此题同POJ1850。
无非就是输入输出变多组。直接上代码。

代码

#include <iostream>#include <string>using namespace std;int c[27][27],len;void Make_C(){    for (int i=0;i<=26;i++)        for (int j=0;j<=i;j++)            if (!j||i==j)                c[i][j]=1;            else                c[i][j]=c[i-1][j-1]+c[i-1][j];}int Code(string str){    int sum=0,i;    /*计算长度比ch小的字符串总共有多少个*/    for (i=1;i<=len-1;i++)        sum+=c[26][i];    /*计算长度等于ch且在ch前面的字符串总共有多少个*/    for (i=0;i<len;i++)    {        char ch=(!i)?'a':str[i-1]+1;        while (ch<=str[i]-1)        {            sum+=c['z'-ch][len-1-i];            ch++;        }    }    return sum+1;}int main(){    string str;    int i;    bool flag;    Make_C();    while (cin>>str)    {        len=str.length();        flag=true;        for (i=0;i<len-1;i++)            if (str[i]>=str[i+1])            {                flag=false;                break;            }        if (flag)        cout<<Code(str)<<endl;        else            cout<<0<<endl;    }    return 0;}
0 0
原创粉丝点击