递归-PTA分形的递归输出

系统管理员 2022-12-22 11:22 305阅读 0赞

分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。

一个盒状分形定义如下: 度为1的盒分形为:

X
度为2的盒分形为:

X X
X
X X
依次类推,如果B(n-1)表示n-1度的盒分形,则n度的盒分形递归定义如下:

B(n - 1) B(n - 1)

  1. B(n - 1)

B(n - 1) B(n - 1)
请画出度为n的盒分形的图形

输入格式:
输入一系列度,每行给出一个不大于7的正整数。输入的最后一行以-1表示输入结束

输出格式:
对于每个用例,输出用’X’标记的盒状分形。在每个测试用例后输出包含一个短划线“-”的一行。

输入样例:
1
2
3
4
-1
输出样例:
注意:每行的空格请输出完整。

  1. X
  2. -
  3. X X
  4. X
  5. X X
  6. -
  7. X X X X
  8. X X
  9. X X X X
  10. X X
  11. X
  12. X X
  13. X X X X
  14. X X
  15. X X X X
  16. -
  17. X X X X X X X X
  18. X X X X
  19. X X X X X X X X
  20. X X X X
  21. X X
  22. X X X X
  23. X X X X X X X X
  24. X X X X
  25. X X X X X X X X
  26. X X X X
  27. X X
  28. X X X X
  29. X X
  30. X
  31. X X
  32. X X X X
  33. X X
  34. X X X X
  35. X X X X X X X X
  36. X X X X
  37. X X X X X X X X
  38. X X X X
  39. X X
  40. X X X X
  41. X X X X X X X X
  42. X X X X
  43. X X X X X X X X
  44. -
  45. #include<stdio.h>
  46. #include<math.h>
  47. char a[2500][2500];
  48. void print(int n,int x,int y)
  49. {
  50. if(n==1) a[x][y]='X';
  51. else
  52. {
  53. int m=pow(3,n-2);
  54. print(n-1,x,y);
  55. print(n-1,x,y+2*m);
  56. print(n-1,x+m,y+m);
  57. print(n-1,x+2*m,y);//左下角
  58. print(n-1,x+2*m,y+2*m);
  59. }
  60. }
  61. int main()
  62. {
  63. int n;
  64. scanf("%d",&n);
  65. while(n!=-1)
  66. {
  67. int len=pow(3,n-1);
  68. for(int i=0;i<len;i++){
  69. for(int j=0;j<len;j++){
  70. a[i][j]=' ';
  71. a[i][len]='\0';
  72. }
  73. }
  74. print(n,0,0);
  75. for(int k=0;k<len;k++)
  76. printf("%s\n",a[k]);
  77. printf("-\n");
  78. scanf("%d",&n);
  79. }
  80. return 0;
  81. }

发表评论

表情:
评论列表 (有 0 条评论,305人围观)

还没有评论,来说两句吧...

相关阅读

    相关 -PTA循环日程表

    设有N个选手进行循环比赛,其中N=2^M,要求每名选手要与其他N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1天,要求每天没有选手轮空。 输入格式: 输入:

    相关 -PTA输出

    分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。 一