Python蛇形方陣的實現(xiàn)
輸入:數(shù)字m mm,n nn
輸出:m mm行n nn列的數(shù)字蛇形方陣
1. 從方陣最左上角開始,順時針向內填充。
初始化一個m mm行n nn列的矩陣matrix,所有元素都為0;然后從第一個位置開始,按順序填充數(shù)字,填滿了一列或一行后,就轉向填寫下一列或下一行,最后打印出這個數(shù)字蛇形方陣。代碼如下:
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()執(zhí)行
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++實現(xiàn)
#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列。隨后的填充順序也需要逆時針旋轉,以保證填充的數(shù)字順序正確。除此之外,這段代碼的實現(xiàn)與前面的代碼基本相同,都是采用四個while循環(huán)來按順序填充數(shù)字。代碼如下:
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()執(zhí)行
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++實現(xiàn)
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;
? ? }
}到此這篇關于Python蛇形方陣的實現(xiàn)的文章就介紹到這了,更多相關Python蛇形方陣內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python 每天如何定時啟動爬蟲任務(實現(xiàn)方法分享)
python 每天如何定時啟動爬蟲任務?今天小編就為大家分享一篇python 實現(xiàn)每天定時啟動爬蟲任務的方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python辦公自動化之自動化清理數(shù)據(jù)和自動化系統(tǒng)命令詳解
這篇文章主要為大家詳細介紹了Python辦公自動化中自動化清理數(shù)據(jù)和自動化系統(tǒng)命令的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2024-01-01
django 數(shù)據(jù)庫連接模塊解析及簡單長連接改造方法
今天小編就為大家分享一篇django 數(shù)據(jù)庫連接模塊解析及簡單長連接改造方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python批量添加水印的優(yōu)雅實現(xiàn)與進階
在日常圖像處理中,為圖片添加水印是一項常見任務,有多種方法和工具可供選擇,本文將專注于使用Python語言結合PIL庫批量添加水印,感興趣的可以了解下2023-12-12

