PTA甲级做题记录

4.4贪心
1.A1038 (贪心策略:若A+B<B+A,则字符串A一定要在B之前,根据此原则sort,要用string类去除前导零)

4.5二分
1.A1085 (二分答案,需要用到long long)
(也可以直接upper_bound,返回第一个大于X的元素的指针)
2.A1044 (二分答案,也可直接lower_bound)

4.6two pointers
1.A1085 (给一个序列,问是由插入or归并排序产生的)(即手动实现插入和归并排序,未写)

4.7
1.A1093 (找每个‘A’左边的‘P’的数量和右边的‘T’的数量,相乘即可)

5.1简单数学
1.A1049 (统计1的个数,30分较难,答案的实现方法较为巧妙)
2.B1013 (筛法求素数表)
3.A1015(注意1不是素数,且需要先判断输入的数是不是素数,如果不是直接输出“No”)
4.A1078(注意平方探测法处理冲突时,当检测到a+(tsize-1)*(tsize-1)时仍未找到可用位置,说明a无法插入)
5.A1059(分解素因数裸题)

6.1vector
1.A1039 (数据量过大,用map和string会超时。使用字符串hash配合vector,注意不能用cin/cout)

8.1 DFS
A1103(注意用一个数组保存n[i]^p,避免递归过程中多次求幂防止超时)

9.2二叉树遍历
1.A1086(此题的进栈元素序列为先序遍历序列,出栈元素顺序为中序遍历序列,问题转化为中序+先序建二叉树)
2.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通讯录的录入与显示pta解题思路可以分为以下几个步骤: 1. 首先,需要定义一个通讯录的数据结构,可以使用字典或者类来表示每条记录的信息,包括姓名、出生日期、性别、固定电话号码和移动电话号码。 2. 接下来,需要录入N条记录。可以使用循环来实现,每次循环输入一条记录的信息,并将其添加到通讯录中。 3. 在录入完成后,需要根据要求显示任意某条记录。首先,需要读取输入的正整数K,表示要查询的记录编号。然后,根据编号从通讯录中找到对应的记录,并将其信息显示出来。 下面是一个示例代码,演示了通讯录的录入与显示的解题思路: ```python # 定义通讯录的数据结构 address_book = [] # 录入N条记录 N = int(input("请输入记录的数量:")) for i in range(N): record = {} record['姓名'] = input("请输入姓名:") record['出生日期'] = input("请输入出生日期:") record['性别'] = input("请输入性别:") record['固定电话号码'] = input("请输入固定电话号码:") record['移动电话号码'] = input("请输入移动电话号码:") address_book.append(record) # 显示任意某条记录 K = int(input("请输入要查询的记录编号:")) record = address_book[K] print("姓名:", record['姓名']) print("出生日期:", record['出生日期']) print("性别:", record['性别']) print("固定电话号码:", record['固定电话号码']) print("移动电话号码:", record['移动电话号码']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值