算法设计:对于给定的长度不超过6的升序字符串,计算它在上述字典中的编码

博客内容介绍了如何设计一个算法,处理长度不超过6的升序字符串,并计算其在特定字典中的编码。输入数据从input.txt读取,包含k个字符串,输出编码结果写入output.txt。

算法设计:对于给定的长度不超过6的升序字符串,计算它在上述字典中的编码数据输入:输入数据由文件名为input.txt提供。文件的第一行是一个正整数k,表示接下来有K行。在接下来的k行中,每行给出一个字符串结果输出:将计算结果输出到文件output.txt。文件共有k行,每行对应一个字符串编码

| 1 |2| `| 26 |28 |
| a| b ||ab```|ac |

#include<iostream>
#include<fstream>
#include<sstream>
#include<string>
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();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值