一道编程中的典型数学模型应用

问题

输入一个数字n ,打印出下列形状

5 5 5 5 5 5 5 5 5 
5 4 4 4 4 4 4 4 5 
5 4 3 3 3 3 3 4 5 
5 4 3 2 2 2 3 4 5 
5 4 3 2 1 2 3 4 5 
5 4 3 2 2 2 3 4 5 
5 4 3 3 3 3 3 4 5 
5 4 4 4 4 4 4 4 5 
5 5 5 5 5 5 5 5 5 

分析

转换为2维坐标系

ksseQU.png

可以将整个图形分为4个区域,可以分别获取个区域所在坐标的关系

代码

#include <stdio.h>

int main() {
    int n, m = 0;
    scanf("%d", &n);
    for (int i = 1; i <= 2 * n - 1; ++i) {
        for (int j = 1; j <= 2 * n - 1; ++j) {
            if(i>j){
                m = (i>2*n-1-j) ? (i-n+1) : (n-j+1);
            }else{
                m = (i>2*n-1-j) ? (j-n+1) : (n-i+1);
            }

            printf("%d ", m);
        }
        printf("\n");
    }
    return 0;
}

发表回复

您的电子邮箱地址不会被公开。