题目链接
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;
for (i=
1;i<=len-
1;i++)
sum+=c[
26][i];
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