解题思路:
只需要找到每一行第一个数是多少,2个数之间相差多少即可
拿N=5举例
1 3 6 10 15 前一个和后一个数之间相差为 2 3 4 5
2 5 9 14 第二行为 3 4 5
4 8 13 第三行为 4 5
7 12 第四行为 5
11 第五行不加
第一列:1 2 4 7 11 每2个数之间相差依次为1 2 3 4
注意事项:
看着复杂,把上面的解题思路多看看就能看懂代码,这个代码的内存小得多,时间复杂度实际上要小于n²,但是都看成是n²
参考代码:
#include<stdio.h>
#include<string.h>
int N,i,j;
int count=1,count1=1;//count1是上一列第一个数和它的下一列第一个数的增量
int temp=2,temp1=2,temp2;//拿N=5来说,第一行为1 3 6 10 15 temp=3-1,6-3,10-6,15-10 temp是前一个数增加的量
//temp1为 每一列第一个数与下一个数增加的量
int main()
{
scanf("%d",&N);
for(i=0;i<N;i++)
{
temp=temp1;//进入下一行时将2个数之间的初始增量设置为temp1
temp2=count;//把每一列的第一个数赋值给temp2
for(int j=0;j<N-i;j++)
{
if(j==0)
printf("%d ",count);//第一个数直接输出
else if(i!=N-1)
{
count+=temp;//下一个数满足temp增量
printf("%d ",count);
temp++;
}
else
{
printf("%d",count);//最后一个数直接输出
return 0;
}
}
temp1++;
count=temp2;//将count变成每一行的第一个数
if(i!=0)
count1++;//因为count1初始值为0所以i=0时count1应该为1 ,i!=0那上下行第一个数之间的增量就加1
count+=count1;
printf("\n");
}
return 0;
}
0.0分
1 人评分
C语言训练-排序问题<2> (C++代码)(sort函数)浏览:1574 |
校门外的树 (C语言代码)浏览:715 |
printf基础练习2 (C语言代码)浏览:942 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1055 |
WU-蓝桥杯算法提高VIP-Quadratic Equation (C++代码)浏览:1747 |
简单的for循环浏览:1408 |
WU-整除问题 (C++代码)浏览:612 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:633 |
字符逆序 (C语言代码)浏览:507 |
1162答案错误,为什么浏览:640 |