这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11453 |
这个作业的目标 | 熟悉for循环的使用,学习他人的优秀代码,提高自己 |
学号 | 20208988 |
1.PTA实验作业(15分/题)
1.1求简单交错序列前N项和
题目内容描述:计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和
1.1.1实验代码截图
1.1.2数据处理:
数据表达:定义了整型变量x,y,浮点型变量i,sum。
数据处理:使用了表达式sum=sum+y*(1/(3*i-2)和for循环
1.1.3 PTA提交列表及说明
Q1:一开始没看见需要自己输入测试用例。
A1:后面注意到了,改正后程序正确。
1.2 求分数序列前N项和
题目内容描述:计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。
1.2.1 实验代码截图
1.2.2 数据处理
数据表达:定义了浮点型变量x, y, i, n, b, a。
数据处理:使用了表达式 b = b + y / x和for循环。
1.2.3 PTA提交列表及说明
Q1:开始的时候并没有处理好x,y值的递加转换赋值关系,耽误了好多时间。
A1:多次尝试后,想到了先给定另一个变量赋y的值再赋值给x进而解决了问题。
1.3求平方根序列前N项和
题目内容描述:计算平方根序列√1+√2+√3+⋯的前N项之和
1.3.1 实验代码截图
1.3.2 数据处理
数据表达:定义了整型变量x,i,浮点型变量sum。
数据处理:使用了表达式sum=sum+sqrt(i)和for循环。
1.3.3 PTA提交列表及说明
Q1:码代码速度慢了,还要练。
A1:题目难度不算大,一次性过了
2.阅读代码(-5——5分)
class Solution {
public:
int minimumOperations(string leaves) {
int n = leaves.size();
vector<vector<int>> f(n, vector<int>(3));
f[0][0] = (leaves[0] == 'y');
f[0][1] = f[0][2] = f[1][2] = INT_MAX;
for (int i = 1; i < n; ++i) {
int isRed = (leaves[i] == 'r');
int isYellow = (leaves[i] == 'y');
f[i][0] = f[i - 1][0] + isYellow;
f[i][1] = min(f[i - 1][0], f[i - 1][1]) + isRed;
if (i >= 2) {
f[i][2] = min(f[i - 1][1], f[i - 1][2]) + isYellow;
}
}
return f[n - 1][2];
}
}
代码功能:实现用最少次数的调整将两种颜色的树叶分类调整完毕。
代码优点:贯穿数学思想,将具体问题数字化,具有极强的逻辑性,
极大的减少了编译代码出错的可能,而且将for循环和if语句相结合以
简化代码复杂程度,并以颜色首字母作为标识字符以便识别。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花费的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 16小时 | 300行 | 概括性的了解了本专业 | 暂无 |
第二周 | 20小时 | 500行 | 学会了如何提问 | 暂无 |
第三周 | 22小时 | 900行 | for循环的使用 | 暂无 |
3.2 累积代码行和博客字数(5分) | ||||
3.3 学习感悟(5分)
请回顾自己的本周的学习过程,如果你有新的想法或者新的方法,请及时记录下来。
本周学习了for循环,简化了代码的复杂程度,提高了函数运算效率,体会到了c语言的实际作用。
c语言的学习,要靠不断的实践积累和自主拓展才能真正学到知识。