WShit

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2.11 题目:二叉搜索树中的最近公共祖先

2.12 设计思路

if  树中不存在 u 或 v
    错误
    结束程序
定义 p 指向根节点
while  true  do:
    if  p->key大于 u 和 v
        p指向左儿子
    else if  p->data小于u和v
        p指向右儿子
    else    //满足 min(u,v) <= key <= max(u,v)
        返回p->key
end

2.13 代码截图

2.14 PTA提交列表说明

2.21 题目:QQ帐户的申请与登陆

2.22 设计思路

定义容器 map<string,string>Pw 存放账号密码
输入操作次数 n
for  i=1 to n  do:
    输入操作 c , 账号 user 和密码 pw.
    if  c=='N'    //注册
        if  Pw.count(user) 找到对应账号
            then  说明账号已存在
            else  新建账号信息 Pw[user] = pw
    if  c=='L'    //登录
        if  Pw[user] == pw
            登录成功
        else if  user存在,但密码不对应
            密码错误
        else
            账号不存在
end  

2.23 代码截图

2.24 PTA提交列表说明

2.31 题目1: 航空公司VIP客户查询

2.32 设计思路

链式哈希表结构体:
typedef struct node{
	string id;
	int cnt;
	struct node* next;
}*List;
List Ha[Max];    //存放头结点
初始化所有头节点为空
输入信息数 n 和最低里程数 k
for i=1 to n do:
    输入身份证号 id 和里程数 l
    若 l<k , l=k
    记录该次航班信息
end
for i=1 to m do:
    输入身份证号 id
    查询该用户信息
end
记录:
取身份证其中五位作为哈希链的表头地址 adr
定义指针 p 指向头结点 Ha[adr]->next
while p!=NULL do:
    if  p所指结点的信息与输入的身份证对应
        then  退出循环
        else  p移向下一结点
end
if  p为空  //完全遍历,没找到对应用户
    then  头插法将该新用户的信息录入链表
    else  累加里程数
end
查询:
List p = Ha[adr]->next
while p!=NULL do:
    if  p->id != id
        then  p=p->next
        else  break
end
if  p为空
    then  输出 "No Info"
    else  输出该用户的累计里程数 p->cnt

2.33 代码截图

2.34 PTA提交列表说明

  • 一开始用 cin 和 cout 进行输入输出超时了,改用 scanf 和 printf 后解决

3.截图本周题目集的PTA最后排名

3.1 PTA排名

3.2 我的总分:3

4. 阅读代码

posted on 2018-05-26 22:42  嗡嗡_嗡  阅读(226)  评论(1编辑  收藏  举报