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. 阅读代码