1. 斜着看,“1”是第一行,“23”是第二行,“456”是第三行,“78910”是第四行,“1112131415”是第五行。。。

用二维数组a[n][n]来表示各个元素
以5为例:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11

  1. 1
  2. 2 3
  3. 4 5 6
  4. 7 8 9 10
  5. 11 12 13 14 15
  6. a[0][0]
  7. a[1][0] a[0][1]
  8. a[2][0] a[1][1] a[0][2]
  9. a[3][0] a[2][1] a[1][2] a[0][3]
  10. a[4][0] a[3][1] a[2][2] a[1][3] a[0][4]

以下程序里所说的行均是指“斜行”的意思

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. while(cin>>n)
  7. {
  8. int a[n][n];
  9. //全部初始化为0
  10. for(int i=0;i<n;i++)
  11. for(int j=0;j<n;j++)
  12. a[i][j]=0;
  13. //赋值每一行的首元素 1,2,4,7,11。。。
  14. a[0][0]=1;
  15. for(int i=1;i<n;i++)
  16. a[i][0]=a[i-1][0]+i;
  17. //从各行的首元素开始,依次赋值(依次+1)
  18. for(int i=0;i<n;i++)
  19. {
  20. int x=i,j=1;
  21. while(x!=0)
  22. //找规律,发现每一行的结束标志是最后一个元素a[i][j]的i为0
  23. {
  24. a[x-1][j]=a[x][j-1]+1;
  25. x--;
  26. j++;
  27. }
  28. }
  29. //输出
  30. for(int i=0;i<n;i++)
  31. {
  32. for(int j=0;j<n;j++)
  33. {
  34. //把所有是0的元素变成空格
  35. if(a[i][j]==0)
  36. cout<<" ";
  37. else
  38. cout<<a[i][j]<<" ";
  39. }
  40. cout<<endl;
  41. }
  42. }
  43. return 0;
  44. }
点赞(0)
 

9.9 分

0 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论