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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouzhou 中级黑马   /  2015-5-14 20:22  /  586 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

输出 n=5 的螺旋方阵
        1  2  3  4  5
        16 17 18 19 6
        15 24 25 20 7
        14 23 22 21 8
        13 12 11 10 9

3 个回复

倒序浏览
                 int SIZE = 5;
                int arr[][] = new int[SIZE][SIZE];
                int i, j, k = 0, n, m;
                n = SIZE;
                m = (n + 1) / 2;
                for (i = 0; i < n; i++) {
                        // 顶边,从左到右,行不变列变
                        for (j = i; j <= n - i - 1; j++)
                                arr[i][j] = ++k;// 输出1、2、3、4、13、14
                       
                        // 右边,从上到下,行变列不变
                        for (j = i + 1; j <= n - i - 1; j++)
                                arr[j][n - i - 1] = ++k; // 输出5、6、7、15
                       
                        // 底边,从右到左,行不变列变
                        for (j = n - i - 2; j >= i; j--)
                                arr[n - i - 1][j] = ++k; // 输出8、9、10、16
                       
                        // 左边,从下到上,行变列不变
                        for (j = n - i - 2; j >= i + 1; j--)
                                arr[j][i] = ++k; // 输出11、12
                }
                for (i = 0; i < n; i++) {
                        for (j = 0; j < n; j++)
                                System.out.print(arr[i][j] + "\t");
                        System.out.println("");
                }
回复 使用道具 举报
本帖最后由 夕阳的刻痕 于 2015-5-14 20:42 编辑

第四题:
        输出 n=5 的螺旋方阵
        1  2  3  4  5
        16 17 18 19 6
        15 24 25 20 7
        14 23 22 21 8
        13 12 11 10 9  
        代码:
                int SIZE = 5;
                int arr[][] = new int[SIZE][SIZE];
                int i, j, k = 0, n, m;
                n = SIZE;
                m = (n + 1) / 2;
                for (i = 0; i < n; i++) {
                        // 顶边,从左到右,行不变列变
                        for (j = i; j <= n - i - 1; j++)
                                arr[j] = ++k;// 输出1、2、3、4、13、14
                        
                        // 右边,从上到下,行变列不变
                        for (j = i + 1; j <= n - i - 1; j++)
                                arr[j][n - i - 1] = ++k; // 输出5、6、7、15
                        
                        // 底边,从右到左,行不变列变
                        for (j = n - i - 2; j >= i; j--)
                                arr[n - i - 1][j] = ++k; // 输出8、9、10、16
                        
                        // 左边,从下到上,行变列不变
                        for (j = n - i - 2; j >= i + 1; j--)
                                arr[j] = ++k; // 输出11、12
                }
                for (i = 0; i < n; i++) {
                        for (j = 0; j < n; j++)
                                System.out.print(arr[j] + "\t");
                        System.out.println("");
                }

------------------------------------------------------------------------------------

i = 0        i<5 ture        
        j=0        j<=5-0-1  ture        
                a[0][0] = ++k 1;        j++        //给二维数组a[0][0]位置上赋值                                
        j=1        j<=5-0-1  ture        
                a[0][1] = ++k 2                j++        //给二维数组a[0][1]位置上赋值
        j=2        j<=5-0-1  ture        
                a[0][2] = ++k 3                j++        //给二维数组a[0][2]位置上赋值
        j=3        j<=5-0-1  ture        
                a[0][3] = ++k 4                j++        //给二维数组a[0][3]位置上赋值
        j=4        j<=5-0-1  ture        
                a[0][4] = ++k 5                j++        //给二维数组a[0][4]位置上赋值
        j=5        j<=5-0-1  false        
-------------------------------------               
        j=1        1<=5-0-1  ture               
                a[1][4] = ++k 6                j++        //给二维数组a[1][4]位置上赋值
        j=2        1<=5-0-1  ture               
                a[2][4] = ++k 7                j++        //给二维数组a[2][4]位置上赋值
        j=3        1<=5-0-1  ture               
                a[3][4] = ++k 8                j++        //给二维数组a[3][4]位置上赋值
        j=4        1<=5-0-1  ture               
                a[4][4] = ++k 9                j++        //给二维数组a[4][4]位置上赋值
        j=4        1<=5-0-1  false
----------------------------------------
        j=3        j>=0        true
                a[4][3] = ++k 10                j--        //给二维数组a[4][3]位置上赋值
        j=2        j>=0        true
                a[4][2] = ++k 11                j--        //给二维数组a[4][2]位置上赋值
        j=1        j>=0        true
                a[4][1] = ++k 12                j--        //给二维数组a[4][1]位置上赋值
        j=0        j>=0        true
                a[4][0] = ++k 13                j--        //给二维数组a[4][0]位置上赋值
        j=-1        j>=0        false
-----------------------------------------
        j=3        j>=1        true
                a[3][0]        = ++k 14                j--        //给二维数组a[3][0]位置上赋值
        j=2        j>=1        true
                a[2][0]        = ++k 15                j--        //给二维数组a[2][0]位置上赋值
        j=1        j>=1        true
                a[1][0]        = ++k 16                j--        //给二维数组a[1][0]位置上赋值
        j=-1        j>=1        false

-----------------------------------------
        for (i = 0; i < n; i++) {
                for (j = 0; j < n; j++)
                        System.out.print(arr[j] + "\t");
                        System.out.println("");
        }//此循环嵌套输出二维数组中的数据


........................



                                     0          1           2           3         4
                        --------------------------------------------------------------
                        0          1           2          3          4          5               
                                                               
                        1        16          0          0            0         6
                                                           
                        2        15         0           0           0          7
                                             
                        3        14        0            0           0         8
                                                      
                        4        13         2         11         10        9

                                                               
回复 使用道具 举报
看看,各位高手
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马