[VIjos 字符串还原]
2011-11-10 23:46
260 查看
[题目来源]:vijsoOrz教主第一次模拟赛
[关键字]:模拟
[题目大意]:每个字符串有三种变换方法:1、倒序;2、所有字母后移k个(k未知);3、所有字母前以k个(k未知),给出三个同一字符串变换后的,求出原字符串。
//=====================================================================================================
[分析]:因为三个变换法则中只有第一个可以确定原串,所以枚举每一个作为倒序后的字符串,还原后与另外两个匹配看是否符合2、3。
[代码]:
View Code
[关键字]:模拟
[题目大意]:每个字符串有三种变换方法:1、倒序;2、所有字母后移k个(k未知);3、所有字母前以k个(k未知),给出三个同一字符串变换后的,求出原字符串。
//=====================================================================================================
[分析]:因为三个变换法则中只有第一个可以确定原串,所以枚举每一个作为倒序后的字符串,还原后与另外两个匹配看是否符合2、3。
[代码]:
View Code
program project1; var s: array[1..3] of ansistring; n: longint; procedure init; begin readln(n); readln(s[1]); readln(s[2]); readln(s[3]); end; function make(s: ansistring):ansistring; var s1: ansistring; i: longint; begin s1 := ''; for i := n downto 1 do s1 := s1+s[i]; exit(s1); end; function done(s1, s2, s3: ansistring):boolean; var i, k, temp: longint; begin k := ord(s2[1])-ord(s1[1]); if k < 0 then k := ord('z')-ord(s1[1])+ord(s2[1])-ord('a')+1; //writeln(k); if k > 6 then exit(false); for i := 2 to n do begin temp := ord(s2[i])-ord(s1[i]); if temp < 0 then temp := ord('z')-ord(s1[i])+ord(s2[i])-ord('a')+1; if k <> temp then exit(false); end; k := ord(s1[1])-ord(s3[1]); if k < 0 then k := ord('z')-ord(s3[1])+ord(s1[1])-ord('a')+1; //writeln(k); if k > 6 then exit(false); for i := 2 to n do begin temp := ord(s1[i])-ord(s3[i]); if temp < 0 then temp := ord('z')-ord(s3[i])+ord(s1[i])-ord('a')+1; if temp <> k then exit(false); end; exit(true); end; function work: ansistring; var i, j: longint; s1: ansistring; begin s1 := make(s[1]); if done(s1,s[2],s[3]) or done(s1,s[3],s[2]) then exit(s1); //writeln(s1,'1'); s1 := make(s[2]); if done(s1,s[1],s[3]) or done(s1,s[3],s[1]) then exit(s1); //writeln(s1,'2'); s1 := make(s[3]); if done(s1,s[1],s[2]) or done(s1,s[2],s[1]) then exit(s1); //writeln(s1,'3'); end; begin assign(input,'d:\1.in');reset(input); assign(output,'d:\1.out');rewrite(output); init; writeln(work); close(input); close(output); end.
相关文章推荐
- Vijos 1449题:字符串还原
- Vijos P1449 字符串还原【密码】
- 【vijos】P1449 字符串还原
- Vijos 字符串还原(大大大暴力)
- firedac的数据序列和还原单元(Data.FireDACJSONReflect.pas)之字符串序列和还原
- python 将base64字符串还原成图片保存
- python 将base64字符串还原成图片保存
- 从十六进制码字符串中还原文件
- 在 Java 中把 .NET 使用 Convert.ToBase64String 转换出的 Base64 字符串还原成文字
- [C/C++]OJ练习题: 压缩字符串&还原压缩字符串 [栈训练]
- 将实体类或者集合序列化为JSON字符串,将JSON字符串反序列化还原为对象
- [SDOI2016] 模式字符串 (BZOJ4598 & VIJOS1995)
- 算法题:字符串还原
- JSON字符串还原成JS原生值
- 用java编写一个简单的字符串加密解密程序,将字符串分成若干行,实现字符串以一列一列读取,并还原之前输入的字符串。这里实现4行输出。
- php函数http_build_query数组变为GET形式字符串方式,parse_str将get参数形式的字符串还原成数组
- [vijos 1379] 字符串的展开
- java中怎样将JSON字符串还原成MAP
- javascript的16进制字符串还原
- c#利用反射,实现将model类变成字符串、再还原成mode对象的功能