讨论 / WA90……AC~
South.Y 2013-02-01 02:53:00
点我顶贴 收藏 删除
程序很丑就不拿上来了= =

好像很多人WA90...

WA90,第三个点没过的原因应该是是密字与原字母没有判断“一一对应”,一定是彼此都是唯一的对应,就是不同字母有不同密字 且不同密字对应不同字母..于是发现这个问题以后把整个算法都改了,加了一个BOOLEAN型的数组,判断这个密字或字母有没有在别的地方用过..

if..else..if..else..if..else..虽然比较麻烦但是并不太费时

还有个地方可以节省时间,

读入以后马上判断if length(s)<26就可以直接writeln('Failed'),然后halt。

终于AC~~

#1 407137009@2010-10-09 18:30:00
回复 删除
感谢LZ

不同字母有不同密字 且不同密字对应不同字母。。当时想当然以为是一一对应。。

AC了,贴下程序。。

var

s1,s2,s3:string;

a,b:array['A'..'Z'] of char;

j,n:longint;

i:char;

begin

readln(s1);

readln(s2);

readln(s3);

for i:='A' to 'Z' do

begin

a[i]:='0';

b[i]:='0';

end;

for j:=1 to length(s1) do

begin

if (a[s1[j]]<>'0')and(a[s1[j]]<>s2[j])then

begin

writeln('Failed');

halt;

end;

if (b[s2[j]]<>'0')and(b[s2[j]]<>s1[j])then

begin

writeln('Failed');

halt;

end;

if (a[s1[j]]='0')and((b[s2[j]]=s1[j])or(b[s2[j]]='0')) then

begin

a[s1[j]]:=s2[j];

b[s2[j]]:=s1[j];

end;

end;

for i:='A' to 'Z' do

if a[i]='0' then

begin

writeln('Failed');

halt;

end;

for j:=1 to length(s3) do

write(a[s3[j]]);

writeln;

end.

#2 Sadassassin@2011-10-13 16:55:00
回复 删除
一直WA90

一直第一个点悲剧~~~~

#3 蔡旭昀@2013-02-01 02:53:00
回复 删除
回复 板凳Sadassassin 的帖子

查看更多回复
提交回复