【发布时间】:2018-08-25 19:41:23
【问题描述】:
4 4 4 4 4 4 4
4 3 3 3 3 3 4
4 3 2 2 2 3 4
4 3 2 1 2 3 4
4 3 2 2 2 3 4
4 3 3 3 3 3 4
4 4 4 4 4 4 4
我们必须为上述模式编写一个程序
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int len = n*2 - 1;
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
int min = i < j ? i : j;
min = min < len-i ? min : len-i-1;
min = min < len-j-1 ? min : len-j-1;
printf("%d ", n-min);
}
printf("\n");
}
return 0;
}
这是打印上述模式的代码我正在了解这些代码背后的主要逻辑是什么,我正在尝试调试和跟踪此代码。我需要帮助,尤其是在这些方面
int min = i < j ? i : j;
min = min < len-i ? min : len-i-1;
min = min < len-j-1 ? min : len-j-1;
【问题讨论】:
-
离中心的距离!
-
你了解三元运算符吗? n 是大小,i 和 j 是行和列。
-
你是怎么观察到他想找到离中心的距离的?
-
而且我非常了解三元运算符
-
我认为这是一个很好的问题;看到有人试图理解它的答案令人耳目一新。很多时候,人们只是想获得一个解决方案而不关心它是如何工作的。