浏览 1139 次
锁定老帖子 主题:方正的主对角线为:“上三角”
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-04-17
import java.util.Scanner; // 题目: //方阵的主对角线之上称为“上三角”。 //请你设计一个用于填充n阶方阵的上三角区域的程序。 //填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。 //例如:当n=3时,输出: //1 2 3 //6 4 //5 //当n=4时,输出: //1 2 3 4 //9 10 5 //8 6 //7 //当n=5时,输出: // 1 2 3 4 5 // 12 13 14 6 // 11 15 7 // 10 8 // 9 // 思路: /* n = 5 的时候,能到的最大的长度为:(n*n-n)/2+n * 使用二维数组保存矩阵中的数值 * 先向右,然后下左,然后向上,依次循环 */ public class 上三角 { public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入一个数:"); int n = Integer.parseInt(input.next()); f(n); } public static void f(int h){ // int n = h; //n 的值 n行n 列 int[][] array = new int[n][n]; int temp = 1; int x=0,y = 0; array[x][y] = temp; //进行元素的添加 while(temp<(n*n-n)/2+n){ // n行n列 , 能回到的最大值; while(y+1<n && array[x][y+1]==0){ //向右 array[x][++y] = ++temp; } while(x+1<n && array[x+1][y-1]==0){ //向左下 array[++x][--y] =++temp; } while(x-1>=0 && array[x-1][y]==0){ //向上 array[--x][y] = ++temp; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(array[i][j]!=0){ System.out.print(array[i][j]+" "); } } System.out.println(); } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |