外星人的密码数字
来源:互联网 发布:python宝典 pdf 编辑:程序博客网 时间:2024/06/10 09:43
【题目描述】
XXXX年突然有外星人造访,但大家语言不通,不过科学家们经过研究发现外星人用26个英文字母组成的单词中最长不降子序列的长度来表述数字,且英文字母的排列顺序不同,现给出其排列顺序,再给出外星人说的每个数字(其实是每个英文单词,用空格隔开),翻译出外星人所说的数字(连续输出,最后加回车)。因为是最长不降子序列,所以数字中没有0,也就是说外星人的数字是>=1的数字。
【输入格式】
第一行一个含有26个小写字母的字符串,保证不重复
第二行一个长度<=255的字符串表示英文单词,用空格隔开
【输出格式】
外星人所说的数字
【样例输入】
abcdefghijklmnopqrstuvwxyz
abcd efg hhh ihg
【样例输出】
4331
【样例解释】
由第一个字符串得a=1,b=2,c=3,d=4,…,z=26
单词abcd即1234,最长不下降子序列长度为4
单词efg即567,最长不下降子序列长度为3
单词hhh即888,最长不下降子序列长度为3
单词ihg即987,最长不下降子序列长度为1
【分析】
动态规划+字符串处理,可以轻松过掉。
var a:array[1..1000]of longint; lis:array[1..1000]of longint; number:array['a'..'z']of longint; i,j,n,ans:longint; st,ss:string;begin readln(st); for i:=1 to 26 do number[st[i]]:=i; readln(st); st:=st+' '; repeat ss:=copy(st,1,pos(' ',st)); delete(st,1,pos(' ',st)); n:=length(ss); for i:=1 to n do a[i]:=number[ss[i]]; for i:=1 to n do lis[i]:=1; for i:=2 to n do for j:=1 to i-1 do if (a[j]<=a[i])and(lis[j]+1>lis[i]) then lis[i]:=lis[j]+1; ans:=0; for i:=1 to n do if ans<lis[i] then ans:=lis[i]; write(ans); until length(st)<=0;end.
测试数据下载
3 0
- 外星人的密码数字
- P1024 外星人的密码数字
- P1024外星人的密码数字
- [tyvj1024]外星人的密码数字
- tyvj 1024 外星人的密码数字
- 【TYVJ】1024 外星人的密码数字
- USCOJ 1063: 外星人的密码数字(1.0版本)
- 外星人间谍的情报
- 外星人的信
- 外星人的驿站
- nyoj_外星人的供应站
- 外星人的供给站
- 【PAT】外星人的语言
- 外星人的供给站
- 外星人的供给站
- 外星人的算术
- 外星人的语言
- Jzoj5234 外星人的路径
- [Leetcode] Remove Element
- c# 利用 splitcontainer 和treeview 在MDI上面显示窗体 (进阶)
- spring中各种经典的注解
- 缓存字段和方法ID
- ELK stack实战之结合rsyslog分析系统日志(auth.log)
- 外星人的密码数字
- 利用MAVEN打包可运行jar包,包括依赖的第三方包
- ggplot2 分面多数据源组合示例
- NodeJs 安装静态的文件服务
- 【Python专题】 使用pycharm+pyqt5 控件事件触发
- 可扩展的web单页应用程序架构
- Andriod Studio基础界面设计
- Apache日志解读,Apache日志每列代表什么?
- 自定义控件View(一)