哥们,你是搞软件大赛的吗?- import java.io.*;
- import java.util.Scanner;
- public class triAn//这里改成自己的类名
- {
- static int [][]M=new int[30][30];//矩阵,用来保存数
- static int idx=1;
- public static void main(String[] args) throws IOException
- {
- int i,j,n = 0;
- Scanner sc=new Scanner(System.in);
- while(sc.hasNextInt())
- {
- idx=1;
- n=sc.nextInt();
- tri(0,0,n);//递归螺旋填充矩阵
- for(i=0;i<n;i++)//打印
- {
- for(j=0;j<n-i;j++)
- System.out.printf("%-4d",M[i][j]);//列宽为4,左对齐
- System.out.println();
- }
- }
- }
- public static void tri(int r,int c,int n)//从坐标(r,c)的元素开始三角填数,每递归调用一次,填最外圈的一个三角,三角形上边长为n
- {
- int i;
- if(n<=0)
- return;
- for(i=0;i<n;i++)//填充三角形上边长
- {
- M[r][c+i]=idx++;
- }
- for(i=1;i<n;i++)//填充三角形斜边长
- {
- M[r+i][c+n-1-i]=idx++;
- }
- for(i=2;i<n;i++)//填充三角形左边长
- {
- M[r+n-i][c]=idx++;
- }
- tri(r+1,c+1,n-3);//递归
- }
- }
复制代码 输入5和10时,结果如下:
|