解题思路:
该题目的思路是套用两次for循环把结果输出,具体方法是 首先找出每一行的规律,也就是first=first+j+k,比如第一行相邻两个数的差是 2 3 4 5,那么下一行就需要比上一行多1 下一行就变成3 4 5,所以需要一个变量k从0开始随着外循环每次都加1,至此,每行的顺序就拍好了。
接着就是每一列的输出思路了,因为我没有使用数组,在这里我需要在外循环重置first的值,此时需要考虑的问题是,当内循环每次j的值都等于1时,需要再次覆盖first的数值,如果仅仅按照first=first+j+k这样的形式输出,则第一列会变成1 3 5 7,这样于输出不符。但是如果要是修改first=first+j+k的形式,那么每行就会改变,所以这个等式不能改变,既然等式不能够改变,并且等式里的first在每行的第一个都需要改变,那么我能想到的办法就是覆盖第一个first,因此我在内循环里套了一个if判断语句。最终成功输出。
注意事项:
单纯的输出需要判断变量在不同循环里的值的变化,并且根据需要重新修改值,这一点需要牢牢记住,并且在输出之后,保证它的规律是具有普遍性的
参考代码:
while True:
try:
a=int(input())
k=0
f1=1
for i in range(1,a+1):
x=0
x=x+i-1
first=x
for j in range(1,a+2-i):
first=first+j+k #第一行后一个数都比前一个数多2 3 4 5
if j==1:
first=f1+i-1
f1=first
print(first,end=" ")
print()
k+=1
except:
break
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复