黑马程序员技术交流社区
标题:
一道算法题 螺旋的升级版
[打印本页]
作者:
李跃达
时间:
2013-1-24 21:06
标题:
一道算法题 螺旋的升级版
本帖最后由 李跃达 于 2013-1-24 21:34 编辑
从键盘上输入数字,螺旋三角打印 比如输入5 则打印
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
作者:
许晓华
时间:
2013-1-25 09:02
哥们,你是搞软件大赛的吗?
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时,结果如下:
2013-01-25_090109.jpg
(30.63 KB, 下载次数: 48)
下载附件
2013-1-25 09:01 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2