这个作业属于哪个课程 | 班级的链接 |
---|---|
这个作业要求在哪里 | 作业要求的链接 |
这个作业的目标 | 了解代码的构成 |
学号 | <20209012> |
1.PTA实验作业
1.1 题目1
计算摄氏温度
1.1.1 实验代码截图
1.1.2 数据处理
数据表达:使用了整形变量。
这些变量的值是怎么来的:将celsius, fahr代入函数和赋值。
类型是:int。
数据处理:
表达式:5*(fahr-32)/9;
流程结构:顺序结构
1.1.3 PTA提交列表及说明
- Q1:提交几次都是显示答案错误
- A1:放在visual studio中运行答案并没有。最后发现是输出的答案少了一个空格
- Q2:编译错误的原因
- A2:return0; 没有空格
1.2 题目2
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
1.2.1 实验代码截图
1.2.2 数据处理
数据表达:整型 浮点型
这些变量的值是怎么来的:double i=1.0,j=2.0,sum=0.0;
int k=1;
类型是:int double
数据处理:
表达式:
for(k=1;k<=n;k++){
sum+=j/i;
double x=i;
i=j;
j=j+x;
流程结构:循环结构
1.2.3 PTA提交列表及说明
- Q1:答案错误
- A1:小数点的那个符号没有调好
1.3 题目3
要求读入1个整数X,然后输出1+2+3+...X 的和。
1.3.1 实验代码截图
1.3.2 数据处理
数据表达:整形
这些变量的值是怎么来的:sum=0
类型是:int
数据处理:
表达式:
sum=sum+i;
流程结构:循环结构
1.3.3 PTA提交列表及说明
- Q1:答案错误
- A1:1+...+x%d=结果%d 额!
2.阅读代码(找一份优秀代码,理解代码功能,并讲出你所选代码有点及可以学习的地方。参考网站:|ACM||leecode面试数题网站|)
代码
class Solution {
public:
vector<vector<string>> solveNQueens(int n) {
auto solutions = vector<vector<string>>();
auto queens = vector<int>(n, -1);
auto columns = unordered_set<int>();
auto diagonals1 = unordered_set<int>();
auto diagonals2 = unordered_set<int>();
backtrack(solutions, queens, n, 0, columns, diagonals1, diagonals2);
return solutions;
}
void backtrack(vector<vector<string>> &solutions, vector<int> &queens, int n, int row, unordered_set<int> &columns, unordered_set<int> &diagonals1, unordered_set<int> &diagonals2) {
if (row == n) {
vector<string> board = generateBoard(queens, n);
solutions.push_back(board);
} else {
for (int i = 0; i < n; i++) {
if (columns.find(i) != columns.end()) {
continue;
}
int diagonal1 = row - i;
if (diagonals1.find(diagonal1) != diagonals1.end()) {
continue;
}
int diagonal2 = row + i;
if (diagonals2.find(diagonal2) != diagonals2.end()) {
continue;
}
queens[row] = i;
columns.insert(i);
diagonals1.insert(diagonal1);
diagonals2.insert(diagonal2);
backtrack(solutions, queens, n, row + 1, columns, diagonals1, diagonals2);
queens[row] = -1;
columns.erase(i);
diagonals1.erase(diagonal1);
diagonals2.erase(diagonal2);
}
}
}
vector<string> generateBoard(vector<int> &queens, int n) {
auto board = vector<string>();
for (int i = 0; i < n; i++) {
string row = string(n, '.');
row[queens[i]] = 'Q';
board.push_back(row);
}
return board;
}
}
可学之处
1.一个很有趣的题目表面上可以看出来答案的问题 用代码表示出来确实有难度。但仔细浏览一下发现还是有许多熟悉的成分
例如 if else for 等等。
3.学习总结
3.1 学习进度条(5分)
周/日期 | 这周所发的时间 | 代码行 | 学会的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 三天 | 10 | 学会输出hello word! | int变量使用原理 |
第二周 | 四天 | 52 | 如何巧妙的提问来获取自己想要的答案 | ? |
第三周 | 三天 | 50 | 学会if else ,for 条件语句和循环语句 | ? |
3.2 累积代码行和博客字数(5分)
3.3 学习感悟(5分)(请回顾自己的本周的学习过程,如果你有新的想法或者新的方法,请及时记录下来。)
1.学计算机光是看书的不行,光听老师讲也不行。 我的学习模式先看书将书上的代码模仿打在电脑上运行一次先看是否正确, 然后将这串代码的所以然弄清楚 ,再到自己的电脑上将代码起码默写四遍以上,只有这样我才能熟练掌握这些代码。