zoukankan      html  css  js  c++  java
  • 蛇形填数之斜着排

    /*
    题目大意:填数
    解题思路:模拟填数的过程
    难点具体解释:模拟填数的过程考虑清楚就可以
    关键点:怎样填数。怎样控制填数的次数
    解题人:lingnichong
    解题时间:2014/08/16    12:40
    解题体会:是蛇形填数的第二种变形
    */


    奇数阶魔方

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
    Total Submission(s) : 4   Accepted Submission(s) : 3

    Font: Times New Roman | Verdana | Georgia

    Font Size:  

    Problem Description

    一个 n 阶方阵的元素是1,2,...,n^2,它的每行,每列和2条对角线上元素的和相等,这样
    的方阵叫魔方。n为奇数时我们有1种构造方法,叫做“右上方” 。比如以下给出n=3。5,7时
    的魔方.
    3
    8 1 6
    3 5 7
    4 9 2
    5
    17 24 1 8 15
    23 5 7 14 16
    4 6 13 20 22
    10 12 19 21 3
    11 18 25 2 9
    7
    30 39 48 1 10 19 28
    38 47 7 9 18 27 29
    46 6 8 17 26 35 37
    5 14 16 25 34 36 45
    13 15 24 33 42 44 4
    21 23 32 41 43 3 12
    22 31 40 49 2 11 20
    第1行中间的数总是1。最后1行中间的数是n^2,他的右边是2。从这三个魔方。你可看出“右
    上方”是何意。

     

    Input

    包括多组数据,首先输入T,表示有T组数据.每组数据1行给出n(3<=n<=19)是奇数。

    Output

    对于每组数据。输出n阶魔方,每一个数占4格,右对齐

    Sample Input

    2
    3
    5
    

    Sample Output

       8   1   6
       3   5   7
       4   9   2
      17  24   1   8  15
      23   5   7  14  16
       4   6  13  20  22
      10  12  19  21   3
      11  18  25   2   9


    #include<stdio.h>
    #include<string.h>
    int a[30][30];
    int  main()
    {
    	int n,m,i,j,k;
    	scanf("%d",&k);
    	while(k--)
    	{
    		scanf("%d",&n);
    		memset(a,0,sizeof(a));
    		i=1;
    		j=n/2+1;
    		a[i][j]=1;
    		for(m=2;m<=n*n;m++)
    		{
    			if(i==1&&j+1<=n)//第一行非最后一个元素。

    { i=n; j++; a[i][j]=m; } else if(i==1&&j==n)//第一行最后一个元素。 { i++; a[i][j]=m; } else if(j==n&&i-1>=1)//最后一列。

    { i--; j=1; a[i][j]=m; } else if(j+1<=n&&i-1>=1&&a[i-1][j+1]==0) { i--; j++; a[i][j]=m; } else if(i-1>=1&&j+1<=n&&a[i-1][j+1]!=0) { i++; a[i][j]=m; } } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%4d",a[i][j]); printf(" "); } } return 0; }





  • 相关阅读:
    使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration
    Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0
    mysql-基本命令
    C# 监听值的变化
    DataGrid样式
    C# 获取当前日期时间
    C# 中生成随机数
    递归和迭代
    PHP 时间转几分几秒
    PHP 根据整数ID,生成唯一字符串
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5099169.html
Copyright © 2011-2022 走看看