思路在于对规律的寻找,可以看出,第一行的每个元素都是(j * j+ j)/2,的到的,那第二行就是第一行去掉第一个元素然后-1,就对应到了第二行,第三行就是第一行去掉前两个元素-2,就得到了第三行,如何控制去掉第一个还是第二个呢?我们可以定义一个变量c,让j+c元素向后偏移,初始为0,每结束一行就++c。这样就可以了。
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
int arr[n][n];
int c = 0;
for(int i =1;i<=n;i++)
{
for(int j =1;j<=n-i+1;j++)
{
printf("%d ",((j+c)*(j+c)+j+c)/2-c);
}
c++;
printf("\n");
}
return 0;
}