我的
- 想法:两重循环,控制换行,打印对应递增数字
- 问题:只能打印出第一行,虽然可以换行但是打印的数字不对
正确
代码
#include <iostream>
using namespace std;
#include <vector>
class Solution
{
public:
vector<vector<int>> getMarix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0));
int loop = n / 2;
int startx = 0, starty = 0;
int cnt = 1;
int length = 1;
int mid = n / 2;
while (loop--) {
int i = startx;
int j = starty;
for ( ; j < starty + n - length; j++) {
res[i][j] = cnt++;
}
for ( ; i < startx + n - length; i++) {
res[i][j] = cnt++;
}
for ( ; j > starty; j--) {
res[i][j] = cnt++;
}
for (; i > startx; i--) {
res[i][j] = cnt++;
}
startx++;
starty++;
length += 2;
}
if (n % 2 != 0) {
res[mid][mid] = cnt++;
}
return res;
}
};
void printMatrix(const vector<vector<int>>& matrix) {
int m = matrix.size();
int n = matrix[0].size();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main()
{
Solution solution;
vector<vector<int>> matrix = solution.getMarix(1);
printMatrix(matrix);
return 0;
}
学习到
- 算法思路:每个题目的示例虽然可能不会覆盖全体数据,各种情况,但是一定是最标准的;首先走一遍示例,确保思路大体思路是对的;然后可以验证前后的例子,可以帮助完善,以及流程的普遍性
- 代码编写过程:每个变量不一定能够都能最开始定义出来,经过两次应该就可以定义,且变量名应见名知意。
- 代码出错,第一时间要弄清楚哪里错了,可能导致错误的原因有哪些,然后去看相应的代码,去缕清思路,去思考,一点点的去改正。有bug就是自己没彻底搞清楚,去提醒自己那些东西没搞清楚;调试bug就是帮助把没搞清楚的搞清楚。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律