未完待续

来源:互联网 发布:浪腾软件招聘 编辑:程序博客网 时间:2024/04/29 04:22

//**程序存储问题**
//作者:崔凯
//学号:2004010966
//联系方式:ckceo@163.com 07466528201
//参考程序:姚伟提交
#include <fstream.h>
#include <string.h>

ifstream du("encode.in");
ofstream xie("output.txt");

int f(int i,int k)//调用算法分析说明书中的f(i,k)
{
 int j,s=0;
 if(k==1)
  return 1;
 else
    {
  for(j=i+1;j<=26;j++)
       s=s+f(j,k-1);
  return s;
 }
}
int g(int k)//调用算法分析说明书中的g(k)
{
 int i,s=0;
 for(i=1;i<=26;i++)
   s=s+f(i,k);
  return s;
}
void main()
{
 int i,j,n,sum,k;//n为总数,sum为序号
 char **p;
 du>>n;
 p=new char*[n+2];

 for(i=0;i<n;i++)
  p[i]=new char[7];

 for(i=0;i<n;i++)
 {
   du>>p[i];//存储字串
 }

 int d[7];//用于统计每个字串最低位的字符在字母表中的序号

   for(j=0;j<n;j++)
 {
  int len;//定义长度

  sum=1;

  len=strlen(p[j]);

        d[0]=0;
//定义每个待测字串最低位字符在字母表中的序列号
  for(i=1;i<=len;i++)
       d[i]=p[j][i-1]-'a'+1;

//计算比需要统计的字符串字长少的所有字串个数
  for(k=1;k<=len-1;k++)
         sum=sum+g(k);

//下面是最后的归并算法
        for(i=1;i<=len;i++)
   for(int h=d[i-1]+1;h<=d[i]-1;h++)
    sum=sum+f(h,len-i+1);  
    
  xie<<sum<<endl;
 
 }
}

原创粉丝点击