var a:array['A'..'Z']of char;
x,y,z:char;
b:array['A'..'Z']of integer;
i:longint;
str1,str2,str3:string;
s:longint;
begin
readln(str1);
readln(str2);
readln(str3);
i:=1;
repeat
x:=str1[i];
y:=str2[i];
if b[x]=0
then
begin
a[x]:=y;
b[x]:=1;
s:=s+1;
end
else
if a[x]<>y
then
begin
writeln('Failed');
exit;
end;
i:=i+1;
until i=length(str1)+1;
if s<26
then
writeln('Failed')
else
begin
for i:=1 to length(str3) do
begin
z:=str3[i];
write(a[z]);
end;
writeln;
end;
end.
哪位大牛帮帮我
a数组记录密文对应关系 b数组记录是否有冲突
只有第3个点错了
program rq518;
var a:array['A'..'Z']of char;
v:array['A'..'Z']of boolean;
n,i,j:longint;
s1,s2,t,ans:string;
k:char;
begin
readln(s1);
readln(s2);
readln(t);
fillchar(a,sizeof(a),0);
for i:=1 to length(s1) do
if (a[s1[i]]=#0)and(not v[s2[i]]) then begin a[s1[i]]:=s2[i];v[s2[i]]:=true;end
else if a[s1[i]]<>s2[i] then begin writeln('Failed');halt;end
else if (a[s1[i]]=#0)and(v[s2[i]]) then begin writeln('Failed');halt;end;
for k:='A' to 'Z' do if a[k]=#0 then begin writeln('Failed');halt;end;
ans:='';
for i:=1 to length(t) do
if a[t[i]]<>#0 then ans:=ans+a[t[i]] else begin writeln('Failed');halt;end;
writeln(ans);
end.
不同的字母对应不同的“密字”,还要判断当前的字母对应的“密字”是否以前被使用过,否则输出‘Failed’。即再加一条判断。