A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 李跃达 中级黑马   /  2013-1-24 21:06  /  2747 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李跃达 于 2013-1-24 21:34 编辑

从键盘上输入数字,螺旋三角打印 比如输入5 则打印
1   2   3   4   5
  12  13  14   6
  11  15   7
  10   8
   9

2 个回复

倒序浏览
哥们,你是搞软件大赛的吗?
  1. import java.io.*;
  2. import java.util.Scanner;
  3. public class triAn//这里改成自己的类名
  4. {
  5. static int [][]M=new int[30][30];//矩阵,用来保存数
  6. static int idx=1;
  7. public static void main(String[] args) throws IOException
  8. {
  9. int i,j,n = 0;
  10. Scanner sc=new Scanner(System.in);
  11. while(sc.hasNextInt())
  12. {
  13. idx=1;
  14. n=sc.nextInt();
  15. tri(0,0,n);//递归螺旋填充矩阵
  16. for(i=0;i<n;i++)//打印
  17. {
  18. for(j=0;j<n-i;j++)
  19. System.out.printf("%-4d",M[i][j]);//列宽为4,左对齐
  20. System.out.println();
  21. }
  22. }
  23. }
  24. public static void tri(int r,int c,int n)//从坐标(r,c)的元素开始三角填数,每递归调用一次,填最外圈的一个三角,三角形上边长为n
  25. {
  26. int i;
  27. if(n<=0)
  28. return;
  29. for(i=0;i<n;i++)//填充三角形上边长
  30. {
  31. M[r][c+i]=idx++;
  32. }
  33. for(i=1;i<n;i++)//填充三角形斜边长
  34. {
  35. M[r+i][c+n-1-i]=idx++;
  36. }
  37. for(i=2;i<n;i++)//填充三角形左边长
  38. {
  39. M[r+n-i][c]=idx++;
  40. }
  41. tri(r+1,c+1,n-3);//递归
  42. }
  43. }

复制代码
输入5和10时,结果如下:

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马