赞
踩
x -= 1;
y -= 1;
// 倒序填入第x行,即:行号不变,列号减少,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (y >= 0 && matrix[x][y] == 0 && step <= n) matrix[x][y–] = step++;
y += 1;
x -= 1;
// 倒序填入第y列,即:列号不变,行号减少,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (x >= 0 && matrix[x][y] == 0 && step <= n) matrix[x–][y] = step++;
x += 1;
y += 1;
}
// 打印螺旋矩阵字符串
for (int i = 0; i < m; i++) {
StringJoiner row = new StringJoiner(" “);
for (int j = 0; j < k; j++) {
if (matrix[i][j] == 0) {
row.add(”*");
} else {
row.add(matrix[i][j] + “”);
}
}
System.out.println(row);
}
}
}
import math
n, m = map(int, input().split())
def getResult():
k = int(math.ceil(n / m))
matrix = [[''] * k for _ in range(m)] # 未填值位置默认初始化为
step = 1
x = 0
y = 0
while step <= n:
while y < k and matrix[x][y] == ‘*’ and step <= n:
matrix[x][y] = str(step)
step += 1
y += 1
y -= 1
x += 1
while x < m and matrix[x][y] == ‘*’ and step <= n:
matrix[x][y] = str(step)
step += 1
x += 1
x -= 1
y -= 1
while y >= 0 and matrix[x][y] == ‘*’ and step <= n:
matrix[x][y] = str(step)
step += 1
y -= 1
y += 1
x -= 1
while x >= 0 and matrix[x][y] == ‘*’ and step <= n:
matrix[x][y] = str(step)
step += 1
x -= 1
x += 1
y += 1
for i in range(m):
print(" ".join(matrix[i]))
getResult()
#include <stdio.h>
#include <math.h>
int main() {
// n 表示需要在螺旋矩阵中填入 1 ~ n 数字
// m 表示螺旋矩阵行数
int n, m;
scanf(“%d %d”, &n, &m);
// k 表示螺旋矩阵列数
int k = (int) ceil(n * 1.0 / m);
// 螺旋矩阵
int matrix[m][k];
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
matrix[i][j] = 0; // 由于需要填入1~n数字,因此这里未填值的位置值默认初始化为0
}
}
// 当前要填入的值
int step = 1;
// 当前要填入的值的位置
int x = 0;
int y = 0;
// 如果填入的值 > n,则停止填值,否则继续填
while (step <= n) {
// 正序填入第x行,即:行号不变,列号增加,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (y < k && matrix[x][y] == 0 && step <= n) matrix[x][y++] = step++;
// 正序填完第x行后,y处于末尾越界位置,因此y需要退一步
y -= 1;
// 正序填完第x行来到第x行的末尾,即第y列,按照螺旋矩阵顺序,应该从第x+1行开始正序填值第y列
x += 1;
// 正序填入第y列,即:列号不变,行号增加,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (x < m && matrix[x][y] == 0 && step <= n) matrix[x++][y] = step++;
x -= 1;
y -= 1;
// 倒序填入第x行,即:行号不变,列号减少,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (y >= 0 && matrix[x][y] == 0 && step <= n) matrix[x][y–] = step++;
y += 1;
x -= 1;
// 倒序填入第y列,即:列号不变,行号减少,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (x >= 0 && matrix[x][y] == 0 && step <= n) matrix[x–][y] = step++;
x += 1;
y += 1;
}
// 打印螺旋矩阵字符串
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
if (matrix[i][j] == 0) {
printf(“*”);
} else {
printf(“%d”, matrix[i][j]);
}
if (j < k - 1) {
printf(" “);
}
}
puts(”");
}
return 0;
}
#include
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int k = n / m + (n % m ? 1 : 0);
int matrix[m][k];
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
matrix[i][j] = 0;
}
}
int step = 1;
int x = 0;
int y = 0;
// 如果填入的值 > n,则停止填值,否则继续填
while (step <= n) {
// 正序填入第x行,即:行号不变,列号增加,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (y < k && matrix[x][y] == 0 && step <= n) matrix[x][y++] = step++;
// 正序填完第x行后,y处于末尾越界位置,因此y需要退一步
y -= 1;
// 正序填完第x行来到第x行的末尾,即第y列,按照螺旋矩阵顺序,应该从第x+1行开始正序填值第y列
x += 1;
// 正序填入第y列,即:列号不变,行号增加,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (x < m && matrix[x][y] == 0 && step <= n) matrix[x++][y] = step++;
x -= 1;
y -= 1;
// 倒序填入第x行,即:行号不变,列号减少,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (y >= 0 && matrix[x][y] == 0 && step <= n) matrix[x][y–] = step++;
y += 1;
x -= 1;
// 倒序填入第y列,即:列号不变,行号减少,注意:添值过程不能发生覆盖,也不能填入超过n的值
while (x >= 0 && matrix[x][y] == 0 && step <= n) matrix[x–][y] = step++;
x += 1;
y += 1;
}
// 打印螺旋矩阵字符串
for (int i = 0; i < m; i++) {
for (int j = 0; j < k; j++) {
if (matrix[i][j] == 0) {
cout << “*”;
} else {
cout << matrix[i][j];
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
dnimg.cn/111f5462e7df433b981dc2430bb9ad39.png)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-haMkbT9D-1712503399631)]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。