本帖最后由 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(""); 
                } 
        } 
} |   
        
 
    
    
    
     
 
 |