杭电2039-2043总结

今天一口气写了两篇博客,这是第二篇。

2039:本题使用了引用参数写了一个“交换函数”swap。第一次提交,没有看清题目需要的数据类型,下意识地把输入数据定义为整形,这是一个习惯性地错误,反映了我做题有很大的条件发射成分,并没有仔细思考过输入。

本题使用了一个判断三边是否能组成三角形的原理,就是最大边(若三边相等,则任意一边都是最大边)小于(严格)其它两边和,就可以组成三角形了。

所以程序一开始需要对三个变量进行排序,排序只是使用了三行代码,没有使用循环,但是这三行代码的思想和冒泡是一样的。

 

2040:本题的程序中写了一个求个真因子之和的函数,但是第一次本地编译把返回值写成了0,这又是习惯性的错误。

除了完全平方数,整数的因子都是成对出现的,所以没有必要遍历所有的因子,只要从1开始遍历到该整数的平方根就可以了。这样可以大大减少运算量。

 

2041:本题可以使用递推法解决,其实结果和斐波那契数列是一样的。同时,在做计数问题的时候,要注意不重合和不遗漏。

 

2042:本题和2013“蟠桃记”题型一样。

 

2043:本题的本质是字符串处理,合格的密码需要条件,第一个条件是关于字符个数的范围,很容易用编程语言模拟;第二个条件是要判断字符串中,字符种类的个数,这时候需要4个变量,记录时候有对应的那种字符类型,如果有变量就记为1,遍历了字符后,判断4个变量的和是否大于等于3,如果是则表明符合第二个条件。

 

PS:本篇博客2041-2043是第二天补上的。

 

 

杭州电子科技大学在线评测系统(杭电OJ)中的目1000-1100是一系列编程,我将分别进行回答。 1000是一个简单的入门,要求计算两个整数的和。我们可以使用一个简单的算法,读取输入的两个整数,然后将它们相加,最后输出结果即可。 1001是一个稍微复杂一些的目,要求实现字符串的逆序输出。我们可以使用一个循环来逐个读取输入的字符,然后将这些字符存储在一个数组中。最后,我们可以倒序遍历数组并将字符依次输出,实现字符串的逆序输出。 1002是一个求最大公约数的问。我们可以使用辗转相除法来解决,即先求出两个数的余数,然后将被除数更新为除数,将除数更新为余数,直至两个数的余数为0。最后的被除数就是最大公约数。 1003是一个比较简单的排序问。我们可以使用冒泡排序算法来解决,即每次比较相邻的两个元素,如果它们的顺序错误就交换它们的位置。重复这个过程直至整个数组有序。 1100是一个动态规划问,要求计算给定序列中的最长上升子序列的长度。我们可以使用一个数组dp来保存到达每个位置的最长上升子序列的长度。每当遍历到一个位置时,我们可以将其和之前的位置比较,如果比之前位置的值大,则将其更新为之前位置的值加1,最后返回dp数组的最大值即可。 以上是对杭电OJ1000-1100目的简要回答,涉及了一些基本的编程知识和算法思想。希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值