解题思路:
只需要找到每一行第一个数是多少,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 人评分
简单的a+b (C语言代码)浏览:548 |
拆分位数 (C语言代码)浏览:1328 |
母牛的故事 (C语言代码)浏览:934 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:578 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:642 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:633 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:683 |
1197求助浏览:631 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:676 |
班级人数 (C语言代码)浏览:927 |