作业帮 > 综合 > 作业

单词编码 pascal编程题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 12:45:52
单词编码 pascal编程题
单词由小写英文字母表组成,n为字母表的长度.例如:
n=1,表示由小写字母a组成单词,仅有一个a,编码为1
n=2,表示由[a,b]组成单词 其全部单词编码有:
a 编码为1 ab 编码为2 b 编码为3
n=4,表示由[a,b,c,d]组成单词,其全部单词编码如下:
a 编码为1 ab 编码为2 abc 编码为3
abcd 编码为4 abd 编码为5 ac 编码为6
acd 编码为7 ad 编码为8 b 编码为9
bc 编码为10 bcd 编码为11 bd 编码为12
c 编码为13 cd 编码为14 d 编码为15
输入
输入文件的第一行包含一个整数n(1≤n≤26),第二行为一个字母严格按升序排列的单词,该单词由前n个小写字母组成,且长度不超过n.
输出
输出文件的第一行且是唯一的一行应包含一个整数,表示该单词的编码.
样例
WORDCODE.IN
4
bcd
WORDCODE.OUT
11
var st:string;
n,ans:longint;
procedure dfs(step,j:longint;s1:string);
var ch:char;
begin
if s1=st then
begin
writeln(ans);
halt;
end;
if step=n+1 then exit;
if j=n then exit;
for ch:=chr(97+j) to chr(97+n-1) do
begin
inc(ans);
dfs(step+1,ord(ch)-96,s1+ch);
end;
end;
begin
readln(n);
readln(st);
dfs(1,0,'');
end.