Python蛇形方阵的实现
作者:机器学习Zero 发布时间:2023-06-27 16:33:21
标签:Python,蛇形方阵
输入:数字m mm,n nn
输出:m mm行n nn列的数字蛇形方阵
1. 从方阵最左上角开始,顺时针向内填充。
初始化一个m mm行n nn列的矩阵matrix,所有元素都为0;然后从第一个位置开始,按顺序填充数字,填满了一列或一行后,就转向填写下一列或下一行,最后打印出这个数字蛇形方阵。代码如下:
def print_snake_matrix(m, n):
matrix = [[0]*n for i in range(m)]
num = 1
i, j = 0, 0
while num <= m*n:
while j < n and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j += 1
j -= 1
i += 1
while i < m and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i += 1
i -= 1
j -= 1
while j >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j -= 1
j += 1
i -= 1
while i >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i -= 1
i += 1
j += 1
for row in matrix:
for num in row:
print(num, end='\t')
print()
执行
print_snake_matrix(4, 6)
输出
1 2 3 4 5 6
16 17 18 19 20 7
15 24 23 22 21 8
14 13 12 11 10 9
c++实现
#include <iostream>
#include <vector>
using namespace std;
void print_snake_matrix(int m, int n) {
vector<vector<int>> matrix(m, vector<int>(n, 0));
int num = 1;
int i = 0, j = 0;
while (num <= m * n) {
while (j < n && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j++;
}
j--;
i++;
while (i < m && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i++;
}
i--;
j--;
while (j >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j--;
}
j++;
i--;
while (i >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i--;
}
i++;
j++;
}
for (auto row : matrix) {
for (int num : row) {
cout << num << "\t";
}
cout << endl;
}
}
2. 从方阵最右上角开始,逆时针向内填充。
由于是从右上角开始填充,所以初始位置为第0 00行第n − 1 n-1n−1列。随后的填充顺序也需要逆时针旋转,以保证填充的数字顺序正确。除此之外,这段代码的实现与前面的代码基本相同,都是采用四个while循环来按顺序填充数字。代码如下:
def print_snake_matrix(m, n):
matrix = [[0]*n for i in range(m)]
num = 1
i, j = 0, n-1
while num <= m*n:
while j >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j -= 1
j += 1
i += 1
while i < m and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i += 1
i -= 1
j += 1
while j < n and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
j += 1
j -= 1
i -= 1
while i >= 0 and matrix[i][j] == 0:
matrix[i][j] = num
num += 1
i -= 1
i += 1
j -= 1
for row in matrix:
for num in row:
print(num, end='\t')
print()
执行
print_snake_matrix(4, 6)
输出
6 5 4 3 2 1
7 20 19 18 17 16
8 21 22 23 24 15
9 10 11 12 13 14
c++实现
void print_snake_matrix(int m, int n) {
vector<vector<int>> matrix(m, vector<int>(n, 0));
int num = 1;
int i = 0, j = n - 1;
while (num <= m * n) {
while (j >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j--;
}
j++;
i++;
while (i < m && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i++;
}
i--;
j++;
while (j < n && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
j++;
}
j--;
i--;
while (i >= 0 && matrix[i][j] == 0) {
matrix[i][j] = num;
num++;
i--;
}
i++;
j--;
}
for (auto row : matrix) {
for (int num : row) {
cout << num << "\t";
}
cout << endl;
}
}
来源:https://blog.csdn.net/apr15/article/details/130629500


猜你喜欢
- 先来说一下我们学校的网站:http://jwxt.sdu.edu.cn:7777/zhxt_bks/zhxt_bks.html查询成绩需要登
- 在python用import或者from...import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我
- 1.直方图的概念图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜
- 本文整理了Pytorch框架下模型的保存、复用、推理、再训练和迁移等实现。模型的保存与复用模型定义和参数打印# 定义模型结构class Le
- 先说需求: 1、django 自带了admin后管,如果我们需要使用,只需把我们定义的models注册即可;2、但如果只是简单注册,那显示的
- 前言本文记录了笔者摸索图数据库过程中遇到的问题、一些思考(闲谈)与实现思路。做此记录的目的是沉淀经验、完善巩固知识体系,同时以此为始,培养撰
- 我用textarea提交大量的阿数据 我开始字段类型选的是mediumtext,数据有丢失 后来我改成了longtext,数据依然丢失, 而
- python中通过虚拟化出来一个空间,与主环境完全隔离,避免项目中对于环境要求,造成的插件版本混乱(python特别吃环境)mac 的配置前
- 在这篇文章里,我们会聊一聊为什么 Python 决定不支持 switch 语句。为什么想要聊这个话题呢?主要是因为 switch 在其它语言
- 在为一个客户排除死锁问题时我遇到了一个有趣的包括InnoDB间隙锁的情形。对于一个WHERE子句不匹配任何行的非插入的写操作中,
- USE [数据库名称]; --1.定义需要查找的关键字。在搜索中,使用模糊搜索:LIKE '%@key_find%'
- jsonp方式一:指定返回方法# 后端def view(request): callback = request.GET.get
- 背景开始讨论弱引用( weakref )之前,我们先来看看什么是弱引用?它到底有什么作用?假设我们有一个多线程程序,并发
- 先简单的了解下日期和时间数据类型及工具python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以
- 大多数做过网页设计的都知道“CSS框架”,而且肯定有很多设计师已经开始在作品中使用CSS框架。就像其他编程语言一样,CSS也可以把一些重复使
- 学了一个多月的python,做了一个小程序:python实现简单成绩录入系统,实验一下menu部分from tkinter import*#
- 1.INPUT和图片按钮对齐:<form method="post" action="
- 安装(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize一、phpize
- 如果你正在运行使用MySQL的Web应用程序,那么你把密码或者其他敏感信息保存在应用程序里的机会就很大。保护这些数据免受黑客或者窥探者的获取
- 如同这个数据结构的名称所说的那样,它记录了每个键值对添加的顺序。d = OrderedDict()d['a'] = 1d[&