- 博客(32)
- 问答 (1)
- 收藏
- 关注
原创 DFS练习之开心(蓝桥)
首先,通过深搜寻找所有可能的位置。比如 n = 1234,k = 1,那么从dfs(0)开始,一个就可能分别出现在向量的 0/1/2 三个索引位,当放置在索引 0 时,成功出口来调用 update 函数求解最大、最小值,并且计算差值。特别地,update 函数首先会在向量的尾部放入数位的最后一位(在示例里是3),其作用是后分割点,当进入该函数时,假如向量。
2024-02-20 10:38:42
1696
原创 DFS/BFS染色算法之混镜之地2(蓝桥)
代码大致流程为,起点染色、判断是否有合法通路(是则输出Yes)、若为否则终点染色、判断墙的四周是否大于等于两种颜色(是则输出Yes/否则No)。特别地,在墙壁四周判断时根据染色的色号1/2,在二进制中0|1=1/0|2=2/1|2=3,遍历4次最后的结果若为3,则表示四周有大于等于两种颜色,即砸开该墙壁后有一条合法通路,输出Yes。O%28nm%29。
2024-02-14 14:51:18
2339
原创 深度优先搜索(DFS)之飞机降落
DFS的前置知识是递归(自己调用自己),在DFS函数形参中,设置了变量last,表示上一架飞机降落结束(当前飞机可降落的最早时间),初始化为0,而后是上一架飞机等待时间与降落时间之和。其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于Ti 时刻开始降落,最晚可以于 Ti+Di 时刻开始降落。“尝试”意味着我们需要检查该飞机是否可以在当前的时间内开始降落,即它的开始降落时间是否在 Ti ~ Ti+Di 的时间段内。
2024-02-05 17:01:54
1645
原创 PAT乙级1025 反转链表
感谢柳神思路,第一行输入的是第一个结点的地址first,结点个数n和每次反转个数K。循环n次,每次输入对应的地址,数据和下一个数据的地址。为了让彼此建立联系,采用类似哈希表的形式,定义整形变量index为地址,定义两个整形数组分别代表该地址的数据和该地址的下一个地址;其次题目输入的结点可能无效,所以需要定义sum统计有效结点的个数,在这过程中将数据从小到大放入order数组;随后根据条件每K个结点反转一次,输出。
2023-02-21 19:51:59
138
原创 PAT乙级1022 D进制的A+B
这里定义整形数组,优点是不会存在赋值时的类型不同导致的答案错误,缺点是无法直接获得数组内实际元素个数,所以会采用k++计算。根据十进制转换成D进制原理,除基取余法(整数)并逆序输出。
2023-02-19 17:39:18
49
原创 PAT乙级1019 数字黑洞(C语言)
用字符串存储输入数字,定义两个变量存储并分类排序,转换成整形(stoi())后相减,因退出循环需要比较条件,故又转换回string类型(to_string()),其中退出条件包括“6174”“和0000”。
2023-02-19 09:22:56
145
原创 PAT乙级1017A除以B
一般会想这么简单,直接用“/”和“%”不就完事儿了吗,但是题目给的数长度非常大(1000),无法一次性运算,所以需要根据除法规则一步一步运算。
2023-02-17 17:31:14
119
原创 PAT乙级1015 德才论(C语言)
熟悉了结构体与结构体数组的使用,若有大量类似的数据,利用结构体统一收集,有多少类数据就定义多少个变量,定义vector结构体数组,将变量分类存入。
2023-02-16 21:19:20
176
原创 PAT乙级1014 福尔摩斯的约会(C语言)
不够严谨,审题不够仔细,前两行0~23点的时间比较除了字符A(10点)~字符N(23点)之外,忽略了0~9点的数字情况,导致部分错误。
2023-02-15 17:43:20
244
原创 PAT乙级1013 数素数(C语言)(需借鉴)
刚开始n++的位置放置错误导致了死循环,以及在思考如何每十个换行时花费时间较久,思路不清晰,万幸AC,每次做完自己潦草的解法后,记得寻找更优算法向大佬学习。
2023-02-14 21:56:16
166
原创 PAT乙级1009 说反话(C语言)
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。需熟悉#include ,其可以逆序输出或判断回文数。给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。每个测试用例的输出占一行,输出倒序后的句子。利用栈先进后出的定义,将每个单词逆序输出。
2023-02-12 16:34:42
65
原创 PAT乙级1008 数组元素循环右移问题(C语言)
一般可能的想法是从最后一个数字出发依次挪到数组首位,但操作困难且复杂,推荐(柳神)思路:即利用C++头文件#include 中的reverse()函数。若想对长度为N的数组循环右移M个位置,则先将数组倒置,其次将前M个数字倒置,最后将剩余第N-M到第N个数字倒置即可。(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移。位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。每个输入包含一个测试用例,第1行输入。个整数,之间用空格分隔。(≥0)个位置,即将。
2023-02-12 15:40:26
79
原创 PAT乙级 1007 素数对猜想(C语言)
思路根据素数定义:只有1和改数本身两个正因数的数。第一个想到暴力解法但是时间复杂度会是,一般情况会超时。根据题意,首先要根据定义先找出素数,然后找出符合题意的素数对输出。
2023-02-05 09:17:03
79
原创 PAT乙级1005 继续(3n+1)猜想(C语言)
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数 n 为“关键数”,如果 n 不能被数列中的其他数字所覆盖。
2022-12-07 17:48:51
143
原创 PAT乙级1003 我要通过!(C语言)
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
2022-12-01 19:47:59
98
原创 PAT乙级1001 害死人不偿命的(3n+1)猜想(C语言)
卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……
2022-11-29 23:31:36
127
1
微机,原理及应用基于8086的综合实验设计简易电子琴proteus7.5仿真软件
2024-05-12
excel线性规划输入引用无效怎么办?
2022-01-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人