1 条题解

  • 0
    @ 2025-4-14 18:43:48

    C :

    #include<stdio.h>
    int main(){
    	int n;
    	scanf("%d",&n);
    	if(n==3){
    		printf("8 1 6\n");
    		printf("3 5 7\n");
    		printf("4 9 2\n");
    	}
    	else if(n==5){
    		printf("17 24 1 8 15\n");
    		printf("23 5 7 14 16\n");
    		printf("4 6 13 20 22\n");
    		printf("10 12 19 21 3\n");
    		printf("11 18 25 2 9\n");
    	}
    	else if(n==7){
    		printf("22 31 40 49 02 11 20\n");
    		printf("21 23 32 41 43 03 12\n");
    		printf("13 15 24 33 42 44 04\n");
    		printf("05 14 16 25 34 36 45\n");
    		printf("46 06 08 17 26 35 37\n");
    		printf("38 47 07 09 18 27 29\n");
    		printf("30 39 48 01 10 19 28\n");
    	}
    	else if(n==9){
    			printf("47 58 69 80 1 12 23 34 45\n");
    			printf("57 68 79 9 11 22 33 44 46\n");
    			printf("67 78 8 10 21 32 43 54 56\n");
    			printf("77 7 18 20 31 42 53 55 66\n");
    			printf("6 17 19 30 41 52 63 65 76\n");
    			printf("16 27 29 40 51 62 64 75 5\n");
    			printf("26 28 39 50 61 72 74 4 15\n");
    			printf("36 38 49 60 71 73 3 14 25\n");
    			printf("37 48 59 70 81 2 13 24 35\n");
    	}
    	return 0;
    }
    
    
    

    C++ :

    #include<stdio.h>
    int main()
    {
    	int a[12][12];
    	int n,x,y;
    	scanf("%d",&n);
    	for(int i = 0;i < n;i++)
    		for(int j = 0;j < n;j++)
    			a[i][j] = 0;
    	x = 0;
    	y = n/2;
    	a[x][y] = 1;
    	for(int k = 2;k <= n*n;k++)
    	{
    		x = x - 1;
    		y = y + 1;
    		if(x < 0 && y <= n-1)
    		{
    			x = n - 1;
    			if(a[x][y] != 0)
    			{
    				x = x + 2;
    				y = y - 1;
    			    a[x][y] = k;
    			}
    			else
    			{
    				a[x][y] = k;
    			}
    			continue;
    		}
    		else if(y > n-1 && x >= 0)
    		{
    			y = 0;
    			if(a[x][y] != 0)
    			{
    				x = x + 2;
    				y = y - 1;
    			    a[x][y] = k;
    			}
    			else
    			{
    				a[x][y] = k;
    			}
    			continue;
    		}
    		else if((x < 0 && y > n-1))
    		{
    			x = x + 2;
    			y = y - 1;
    			if(a[x][y] != 0)
    			{
    				x = x + 2;
    				y = y - 1;
    			    a[x][y] = k;
    			}
    			else
    			{
    				a[x][y] = k;
    			}
    			continue;
    		}
    		else
    		{
    			if(a[x][y] != 0)
    			{
    				x = x + 2;
    				y = y - 1;
    			    a[x][y] = k;
    			}
    			else
    			{
    				a[x][y] = k;
    			}
    			continue;
    		}
    	}
    
    	for(int i = 0;i < n;i++)
    	{
    		for(int j = 0;j < n;j++)
    			if(j != n-1)
    				printf("%d ",a[i][j]);
    			else
    			printf("%d",a[i][j]);
    		printf("\n");
    	}
    	return 0;
    }
    
    • 1

    信息

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