アルゴリズム設計:与えられた長さが6を超えない昇順文字列について、上記辞書での符号化を計算する
12192 ワード
アルゴリズム設計:所与の長さが6を超えない昇順文字列に対して、上記辞書における符号化データの入力を計算する:入力データはファイル名input.txt提供.ファイルの最初の行は正の整数kであり、次にK行があることを示す.次のk行では、各行に文字列結果の出力が与えられる:計算結果をファイルoutput.に出力する.txt.ファイルにはk行があり、各行に1つの文字列符号化が対応している.
| 1
| 1
|2
| `| 26 |28 | | a | b |
|ab```|ac | #include
#include
#include
#include
using namespace std;
/* : 6 ,
* : input.txt 。 k, K 。 k ,
* : output.txt。 k , */
int a[26][26]={
0};
int b[6]={
0};
int f(string s)
{
int len=s.length(),l1=0,l2;
int num=0;
for(int i=0;i<len-1;i++)
num+=b[i];
l2=len;
for(int j=0;j<len;j++)
{
l1=s[j]-'a';
for(int k=0;k<l1;k++)
{
num+=a[k][l2-1];
}
l2--;
}
if(len==1)
num++;
return num;
}
int main()
{
for(int k=0;k<26;k++)
{
for (int i = 0; i < 26; i++) {
if(k==0)
{
a[i][k]=1;
}
else {
for (int j = i + 1; j < 26; j++) {
a[i][k] += a[j][k - 1];
}
}
b[k]+=a[i][k];
}
}
ifstream in("/home/ying/input.txt");
ofstream out("/home/ying/output.txt");
int n;
string s;
getline(in,s);
istringstream is(s);
is>>n;
cout<<"n="<<n<<endl;
int i=0;
while(i<n)
{
getline(in,s);
cout<<s<<endl;
out<<f(s)<<endl;
i++;
}
in.close();
out.close();
}