zoukankan      html  css  js  c++  java
  • 魔方矩阵

    题目标题:

    魔方矩阵(彭纪良)  

    题目描述:

    输入一奇数n(n<20),打印出1->n*n构成的魔方矩阵。   

    魔方矩阵的行列及对角线的和都相等。  

    输入描述:

    输入一奇数n(n<20)  

    输出描述描述:

    打印出1->n*n构成的魔方矩阵,每一个数据之间用一个空格隔开,但每行的最后一个数据后不能有空格.所有输出的最后一行不能有回车  

    样式输入:

    3  

    样式输出:

    8 1 6

    3 5 7

    4 9 2

    解法一:

    #include<stdio.h>
    main()
    {
     int a[20][20]={0},i,j,k,n;
     scanf("%d",&n);
     i=0;j=n/2;a[i][j]=1;  /*j=n/2与j=(n-1)/2效果相同,因为整型数运算后取整去余*/
     for(k=2;k<=n*n;k++)
     { 
         i=i-1;j=j+1;
         if(i<0) i=n-1;     /*行的限制*/
         if(j>n-1) j=0;     /*列的限制*/
         if(a[i][j]!=0) i++;/*赋值对象已被赋值的情况*/
         a[i][j]=k;
    }
    /*魔方方阵各元素赋值,要经过三次判断以确保正确赋值*/
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++) {
    printf(
    "%d",a[i][j]); if(j<n-1)
    printf(" "); } if(i<n-1)
    printf(" "); }
    }
    /*魔方方阵输出*/

    解法二:

    #include<stdio.h>
    void main()
    {
        int a[20][20]={0},n,i,j,h,l;
        scanf("%d",&n);
        a[0][(n-1)/2]=1;h=0;l=(n-1)/2;
        for(i=2;i<=n*n;i++)          /*n的平方喔*/
        {
            if     (h!=0 && l!=(n-1) && a[h-1][l+1]==0){a[h-1][l+1]=i;h=h-1;l=l+1;}
            else if(h==0 && l!=(n-1) && a[n-1][l+1]==0){a[n-1][l+1]=i;h=n-1;l=l+1;}
            else if(h!=0 && l==(n-1) && a[h-1][0]==0)  {a[h-1][0]=i;h=h-1;l=0;}
            else if(h==0 && l==(n-1) && a[n-1][0]==0)  {a[n-1][0]=i;h=n-1;l=0;}
            else{ a[h+1][l]=i;h=h+1;l=l;}
        }
        
        
        
        
        for(i=0;i<n;i++)
        {
    for(j=0;j<n;j++) {
    printf(
    "%d",a[i][j]); if(j<n-1)
    printf(" "); } if(i<n-1)
    printf(" "); } }
  • 相关阅读:
    占位
    阳光服务平台-敏捷开发
    两种方法实现带验证码的用户登录
    红警大战JAVA简单版
    JPanel与JFrame的区别
    java中import详解
    敏捷开发
    GitHub:本地项目上传与团队协作
    从结缘计算机到未来规划
    (三)微信小程序首页的分类功能和搜索功能的实现笔记
  • 原文地址:https://www.cnblogs.com/achst/p/3647102.html
Copyright © 2011-2022 走看看