亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

由于是從右上角開始填充,所以初始位置為第0 00行第n − 1 n-1n−1列。隨后的填充順序也需要逆時(shí)針旋轉(zhuǎn),以保證填充的數(shù)字順序正確。除此之外,這段代碼的實(shí)現(xiàn)與前面的代碼基本相同,都是采用四個(gè)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++實(shí)現(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;
? ? }
}

到此這篇關(guān)于Python蛇形方陣的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python蛇形方陣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論