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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangweiwei001 中级黑马   /  2015-8-8 11:34  /  1177 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jiangweiwei001 于 2015-8-8 11:34 编辑

/*
输入n。m 输出一个n行m列的矩阵
数值为1——n*m,呈现出从左上到右下螺旋型输出
例如输入:4 5
输出
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
*/
import java.util.Scanner;
class Screw
{
        public static void main(String[] args)
        {
                Scanner sc = new Scanner(System.in);//输入。
                int m = sc.nextInt();
                int n = sc.nextInt();
                operation(m,n);//调用函数
        }
        private static void operation(int m,int n){
                int k = 0;
                int [][] a = new int[m][n];
                for(int i = 0;i < m;i++){
                        //顶层,从左到右。行不变列变,m不变n变。
                        for(int j = i ; j <= n - i - 1 ; j++){
                                a[j] = ++k;
                        }
                        //右测,从上到下,列不变行变。n不变m变
                        for(int j = i + 1;j <= m - i - 1 ; j++){
                                a[j][n - i - 1] = ++k;
                        }
                        //底端,从右到左,行不变列变,m不变n变
                        for(int j = n - i - 2 ; j >= i ;j--){
                                a[m - i - 1][j] = ++k;
                        }
                        //左端,从下往上,列不变行变。n不变m变
                        for(int j = m - i - 2 ; j >= i + 1 ; j--){
                                a[j] = ++k;
                        }
                }
                for (int i = 0; i < m; i++) {
                        for (int j = 0; j < n; j++)
                                System.out.print(a[j] + "\t");
                        System.out.println("");
                }
        }
}

2 个回复

倒序浏览
好像都是按照上行、右列、下行、左列的顺序依次添加,不知道还有没有别的算法
回复 使用道具 举报
不错  顶一个。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马