1 条题解

  • 0
    @ 2021-6-15 13:05:33

    C :

    
    #include <stdio.h>
    main()
    {
     int N;
     int a[10][10];
     while (scanf("%d",&N)!=EOF){
            int i,j,k,n=1;
     for(k=0;k<(N+1)/2;k++)
    { for(i=k,j=k;j<N-1-k;j++)
     {a[i][j]=n;n++;}
     for(;i<N-1-k;i++)
     {a[i][j]=n;n++;}
     for(;j>k;j--)
     {a[i][j]=n;n++;}
     for(;i>k;i--)
     {a[i][j]=n;n++;}
    }
     if(N%2!=0)
     a[i][j]=n;
     for(i=0;i<N;i++)
    {
     for(j=0;j<N;j++)
        if (j!=(N-1))
     printf("%d ",a[i][j]);
     else printf("%d",a[i][j]);
     if (j!=(N-1))
        printf("\n");
    }
    }
    }
    
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    int a[15][15];
    int n;
    
    void change()
    {
    	int ff=0;
    	int data=1;
    	int i=1,j=1;
    	
    	while(data<=n*n){
    		
    		a[i][j]=data++;
    		
    		
    		if (ff==0){
    			j++;
    			if (a[i][j]!=0){
    				i++;
    				j--;
    				ff=1;
    			}
    			continue;
    		}
    		
    		if (ff==1){
    			
    			i++;
    			if (a[i][j]!=0) {
    				j--;
    				i--;
    				ff=2;
    			}
    			continue;
    		}
    		
    		if (ff==2){
    			
    			j--;
    			if (a[i][j]!=0){
    				i--;
    				j++;
    				ff=3;
    			} 
    			
    			continue;
    			
    		}
    		
    		
    		if (ff==3){
    			i--;
    			if (a[i][j]!=0){
    				j++;
    				i++;
    				ff=0;
    			}
    		
    			
    			continue;
    		}
    		
    	}
    	
    	
    }
    
    void init()
    {
    	memset(a,0,sizeof(a));
    	for (int i=0;i<=n+1;i++){
    		a[0][i]=a[i][0]=a[n+1][i]=a[i][n+1]=-1;
    	}
    }
    
    
    void print()
    {
    	for (int i=1;i<=n;i++){
    		for (int s=1;s<=n;s++){
    			if (s>1) printf(" ");
    			printf("%d",a[i][s]);
    		}
    		printf("\n");
    	}
    }
    
    int main()
    {
    	
    	while(~scanf("%d",&n)){
    		
    		init();
    		
    		change();
    		
    		print();
    		
    	}
    	return 0;
    }
    

    Java :

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		boolean flag = true;
    		int n;
    		while (scan.hasNextInt()) {
    			n = scan.nextInt();
    			int[][] arrs = new int[n][n];
    			int a;
    			int b;
    			int c = 0;
    			int z = n * n;// 矩阵最大数字
    			int ou = 1;// 当前数字
    			while (ou <= z) {
    				a = 0;
    				b = 0;
    				for (a = a + c, b = b + c; b < n - c; b++) {// 从左到右
    					if (ou > z) {
    						break;
    					} else {
    						arrs[a][b] = ou++;
    					}
    				}
    
    				for (b--, a++; a < n - c; a++) {// 从上到下
    					if (ou > z) {
    						break;
    					} else {
    						arrs[a][b] = ou++;
    					}
    				}
    
    				for (b--, a--; b >= c; b--) {// 从右到左
    					if (ou > z) {
    						break;
    					} else {
    						arrs[a][b] = ou++;
    					}
    				}
    
    				for (a--, b++; a >= c + 1; a--) {// 从下到上
    					if (ou > z) {
    						break;
    					} else {
    						arrs[a][b] = ou++;
    					}
    				}
    				c++;// 圈数
    			}
    
    			int i, j;
    			for (i = 0; i < n; i++) {
    				for (j = 0; j < n; j++)
    					System.out.print(arrs[i][j] + " ");
    
    				System.out.println();
    			}
    		}
          
           
    	}
    
    }
    
    • 1

    信息

    ID
    829
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者