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

    xiaoxiao2021-03-25  115

    题目链接

    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; }
    转载请注明原文地址: https://ju.6miu.com/read-6892.html

    最新回复(0)