自学内容网 自学内容网

【平方矩阵 + 蛇形矩阵】

矩阵找规律题

题目链接:

平方矩阵 I

在这里插入图片描述
在这里插入图片描述

解法一:找坐标规律

while True:
    x = int(input())
    if not x:
        break
    for i in range(x):
        for j in range(x):
            print('%d' % min(i + 1, j + 1, x - i, x - j), end = ' ')
        print()
    print()

解法二:曼哈顿距离

平方矩阵 ||

在这里插入图片描述
在这里插入图片描述

解法一:动态规划

while True:
    x = int(input())
    if not x:
        break
    a = []
    for i in range(101):
        a.append([0]*100)
    for i in range(x):
        a[0][i] = i + 1
        a[i][0] = i + 1
    for i in range(1, x):
        for j in range(1, x):
            a[i][j] = a[i - 1][j - 1]
    for i in range(x):
        for j in range(x):
            print('%d' % a[i][j], end = ' ')
        print()
    print()

解法二:找坐标规律

while True:
    x = int(input())
    if not x:
        break
    for i in range(x):
        for j in range(x):
            print('%d' % (abs(i - j) + 1), end = ' ')
        print()
    print()

平方矩阵 |||

在这里插入图片描述
在这里插入图片描述

解法一:动态规划

while True:
    x = int(input())
    if not x:
        break
    a = []
    for i in range(101):
        a.append([0]*15)
    for i in range(x):
        a[0][i] = 2 ** i
        a[i][0] = 2 ** i
    for i in range(1, x):
        for j in range(1, x):
            a[i][j] = a[i - 1][j - 1] * 4
    for i in range(x):
        for j in range(x):
            print('%d' % a[i][j], end = ' ')
        print()
    print()

解法二:找坐标规律

#include <iostream>

using namespace std;

int main()
{
    int n;
    while(cin >> n,n)
    {
        for(int i = 0; i < n; i ++)
        {
            for(int j = 0; j < n; j ++)
                cout << (1 << i) * (1 << j) << ' ';//两个乘数 后者控制基数 1 ~ 2^(n-1) ,前者控制倍数
            cout << endl;
        }
        cout << endl;
    }
    return 0;
}

蛇形矩阵

在这里插入图片描述

在这里插入图片描述

python 题解

a, b = map(int, input().split())
matrix = []
# 初始化列表 
for i in range(a):
    matrix.append([0] * b)

# 初始化边界
left, right, top, bottom = 0, b - 1, 0, a - 1
# 填充的数字从1开始
k = 1

# 循环运算
while left <= right and top <= bottom:
    # 从左到右填充上边
    if top <= bottom:
        for i in range(left, right + 1):
            matrix[top][i] = k
            k += 1
        top += 1  # 上边界向下缩小
    
    # 从上到下填充右边
    if left <= right:
        for i in range(top, bottom + 1):
            matrix[i][right] = k   
            k += 1
        right -= 1  # 右边界向左缩小

    # 从右到左填充下边
    if top <= bottom:
        for i in range(right, left - 1, -1):
            matrix[bottom][i] = k   
            k += 1
        bottom -= 1  # 下边界向上缩小

    # 从下到上填充左边
    if left <= right:
        for i in range(bottom, top - 1, -1):
            matrix[i][left] = k   
            k += 1
        left += 1  # 左边界向右缩小


for i in range(a):
    for j in range(b):
        print("%d" % matrix[i][j], end = ' ')
    print()


原文地址:https://blog.csdn.net/m0_72256122/article/details/143067515

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!