问题
输入一个数字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维坐标系
可以将整个图形分为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; }