欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python蛇形方陣的實現(xiàn)

 更新時間:2023年05月19日 08:43:27   作者:機器學習Zero  
本文主要介紹了Python蛇形方陣的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

輸入:數(shù)字m mm,n nn

輸出:m mm行n nn列的數(shù)字蛇形方陣

1. 從方陣最左上角開始,順時針向內(nèi)填充。

初始化一個m mm行n nn列的矩陣matrix,所有元素都為0;然后從第一個位置開始,按順序填充數(shù)字,填滿了一列或一行后,就轉(zhuǎn)向填寫下一列或下一行,最后打印出這個數(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. 從方陣最右上角開始,逆時針向內(nèi)填充。

由于是從右上角開始填充,所以初始位置為第0 00行第n − 1 n-1n−1列。隨后的填充順序也需要逆時針旋轉(zhuǎn),以保證填充的數(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蛇形方陣內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Python 正則表達式模塊

    詳解Python 正則表達式模塊

    這篇文章主要介紹了Python 正則表達式模塊詳解,分為兩部分,包括基礎語法總結(jié),re模塊的相關知識,需要的朋友可以參考下
    2018-11-11
  • 一文詳解Python中的zip函數(shù)

    一文詳解Python中的zip函數(shù)

    在Python中,處理數(shù)據(jù)時經(jīng)常需要同時遍歷多個序列,zip函數(shù)提供了一種簡潔的方式來組合這些序列,它用于將多個可迭代對象(如列表、元組等)的元素配對,本文將給大家詳細介紹一下Python中的zip函數(shù),需要的朋友可以參考下
    2024-05-05
  • Python增強下git那長長的指令詳解

    Python增強下git那長長的指令詳解

    這篇文章主要介紹了Python增強下git那長長的指令 ,在開發(fā)中用到的代碼目錄結(jié)構(gòu),本文也給大家詳細講解,需要的朋友可以參考下
    2021-09-09
  • python 每天如何定時啟動爬蟲任務(實現(xiàn)方法分享)

    python 每天如何定時啟動爬蟲任務(實現(xiàn)方法分享)

    python 每天如何定時啟動爬蟲任務?今天小編就為大家分享一篇python 實現(xiàn)每天定時啟動爬蟲任務的方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python實現(xiàn)線性搜索算法的示例代碼

    Python實現(xiàn)線性搜索算法的示例代碼

    線性搜索算法,也稱為順序搜索算法,是一種簡單但常用的搜索技術,在本文中,將深入研究線性搜索算法,并演示如何在?Python?中實現(xiàn)它,需要的可以參考下
    2024-02-02
  • 跟老齊學Python之深入變量和引用對象

    跟老齊學Python之深入變量和引用對象

    本講再次提及變量和引用對象,就是要讓看官對變量和賦值有一個知其然和知其所以然的認識。當然,最后能不能達到此目的,主要看我是不是說的通俗易懂了。如果您沒有明白,就說明我說的還不夠好,可以聯(lián)系我,我再為您效勞。
    2014-09-09
  • Python辦公自動化之自動化清理數(shù)據(jù)和自動化系統(tǒng)命令詳解

    Python辦公自動化之自動化清理數(shù)據(jù)和自動化系統(tǒng)命令詳解

    這篇文章主要為大家詳細介紹了Python辦公自動化中自動化清理數(shù)據(jù)和自動化系統(tǒng)命令的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-01-01
  • django 數(shù)據(jù)庫連接模塊解析及簡單長連接改造方法

    django 數(shù)據(jù)庫連接模塊解析及簡單長連接改造方法

    今天小編就為大家分享一篇django 數(shù)據(jù)庫連接模塊解析及簡單長連接改造方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python批量添加水印的優(yōu)雅實現(xiàn)與進階

    Python批量添加水印的優(yōu)雅實現(xiàn)與進階

    在日常圖像處理中,為圖片添加水印是一項常見任務,有多種方法和工具可供選擇,本文將專注于使用Python語言結(jié)合PIL庫批量添加水印,感興趣的可以了解下
    2023-12-12
  • python使用tkinter庫實現(xiàn)五子棋游戲

    python使用tkinter庫實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了python使用tkinter庫實現(xiàn)五子棋游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論