Word Index 解题报告
题目:http://acm.tju.edu.cn/toj/showp1105.html
解题思路:方法1,分析规律,根据给定字符串计算。
方法2:按顺序生成所有可能的序列,保存在数组中,在数组查找要求的字符串,其在数组中的位置就是其序号。当然首先判断是否为合法字符串,不是则输出0.
方法2程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char q[200000][6];
int check(char c[])
{
int i,len;
len=strlen(c);
for(i=len-1;i>0;i--)
if(c[i]<=c[i-1])
return 0;
return 1;
}
int main()
{
int i,f,r;
char end,t[6];
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
f=r=0;
for(i='a';i<='z';i++)
{
q[r][0]=i;
q[r][1]='\0';
r++;
}
while(1)
{
//取队首
for(i=0;q[f][i]!='\0';i++) ;
if(i==5) break; //如果所有的四位都处理玩,结束
i--;
end=q[f][i];
for(end++;end<='z';end++) //生成下一个字符串
{
for(i=0;q[f][i];i++) q[r][i]=q[f][i];
q[r][i++]=end;
q[r][i]='\0';
r++;
}
f++;
}
while(scanf("%s",t)!=EOF)
{
if(check(t))
{
for(i=0;i<r;i++)
{if(strcmp(t,q[i])==0)
{
break;}
}
}
else
i=-1;
printf("%d\n",i+1);
}
return 0;
}
本文来源于网络小筑 http://www.iwebtrados.com.cn/ , 原文地址:http://www.iwebtrados.com.cn/post/204.html
个人网站:生活百科
本文版权所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。