• 【回旋数字】c语言实现


    昨天在看python,突然群里有人问回旋数字的算法,然后就把手头上的python丢到了一边,做起了题.(囧)

    说一下我的思路吧,就是将矩阵分成若干圈,每一圈看成上下左右四个数列。

    圈数以及数列长度如何确定?

    很简单,圈数是n/2+n%2,数列长度是n-1-count*2(count表示的是第几圈)

    下面贴上我的代码:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <memory.h>
     4 #define max 100
     5 int n;//给定的参数
     6 int cnt;//第几圈
     7 int all;//总圈数
     8 int len;//数列的长度
     9 int startindex;//每个数列开始的索引
    10 int start;//每圈的起始数
    11 int matrix[max][max];//存储数
    12 
    13 int main(void)
    14 {
    15     memset(matrix,0,sizeof(matrix));
    16     scanf("%d",&n);
    17     all = n/2+n%2;
    18     cnt = 1;
    19     start =0;
    20     while (cnt<=all)
    21     {
    22 
    23         int i;
    24         len = n-1-((cnt-1)<<1);
    25         //cnt++;
    26         for (startindex=cnt,i=1;i<=len;i++)
    27         {
    28             matrix [cnt][startindex++]=start+i;
    29            // printf ("%d ",matrix[cnt][startindex-1]);
    30         }
    31         for (startindex=cnt,i=1;i<=len;i++)
    32         {
    33             matrix[startindex++][n-cnt+1]=start+len+i;
    34         }
    35         for (startindex=n-cnt+1,i=1;i<=len;i++)
    36         {
    37             matrix[n-cnt+1][startindex--]=start+len*2+i;
    38         }
    39         for (startindex=n-cnt+1,i=1;i<=len;i++)
    40         {
    41             matrix[startindex--][cnt]=start+len*3+i;
    42         }
    43         cnt++;
    44         start = start+len*4;
    45     }
    46     if (n%2)
    47     {
    48         int m=(n+1)/2;
    49         matrix[m][m]=n*n;
    50     }
    51     int i,j;
    52     for (i=1;i<=n;i++)
    53     {
    54         for (j=1;j<=n;j++)
    55         {
    56             printf("%2d ",matrix[i][j]);
    57         }
    58         printf("\n");
    59 
    60     }
    61     return 0;
    62 
    63 }
  • 相关阅读:
    hive中named_struct构造和使用
    hive非分区表导入csv数据
    hive常用的日期函数
    hive mapreduce reducer 调优
    Hive Analytics Functions row_number rank over partition by
    skip-grant-tables
    VC中的字符串转换宏
    CMAKE的使用
    VSCODE C/C++配置
    libcurl,多线程,gzip,共享DNS
  • 原文地址:https://www.cnblogs.com/lianwl/p/3181458.html
Copyright © 2020-2023  润新知