poj1850

来源:互联网 发布:协同过滤推荐算法 java 编辑:程序博客网 时间:2024/06/05 16:57

可以算组合吗?长度为2的字母,一共有C(26,2)个,这很难理解么?然后推一下当前要算的字母在哪个位置即可了。

#include <iostream>#include "string"using namespace std;int c[27][27];void combinations(){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];}}}return;}int main(){    combinations();    string s;    while (cin>>s)    {for(int i=1;i<s.length();i++)        {            if(s[i-1]>=s[i]){cout<<0<<endl;return 0;}}int sum=0;        for(int i=1;i<s.length();i++)sum+=c[26][i];        for(int i=0;i<s.length();i++){char ch= (!i)?'a':s[i-1]+1;            while(ch<=s[i]-1)            {sum+=c['z'-ch][s.length()-1-i]; ch++;}}cout<<++sum<<endl;    }}


0 0
原创粉丝点击