• c 输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 (MD花了半天时间,思路不对害死人)


      1 输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 
      2 
      3 比如:
      4 
      5 输入:5 18 
      6 
      7 输出:
      8 
      9 1  2  3  4  5
     10 
     11 16 17 18 0  6 
     12 
     13 15 0  0  0  7
     14 
     15 14 0  0  0  8
     16 
     17 13 12 11 10 9
     18 
     19 
     20 
     21 输入: 4 12 
     22 
     23 输出:
     24 
     25 1 2 3 4
     26 
     27 12 0 0 5
     28 
     29 11 0 0 6
     30 
     31 10 9 8 7
     32 
     33 #include<stdio.h>
     34 
     35 int main(void)
     36 {
     37     int n,m,i,j,temp;
     38     int dir = 0;  //0向右,1向下,2向左,3向上,
     39     scanf("%d%d",&m,&n);
     40     int arr[m][m];
     41     
     42     //对数组初始化 arr[m][m] = {0}编译不通过
     43     for(i=0; i<m; i++)
     44     {
     45         for(j=0; j<m; j++)
     46         {
     47             arr[i][j] = 0;
     48         }
     49     }
     50     
     51     i = j = 0;
     52     temp = 1;
     53     while(temp <= m*m)
     54     {
     55         if(temp > n)break;
     56         arr[i][j] = temp;
     57         switch(dir)
     58         {
     59             case 0:
     60             {
     61                 if(j+1 == m || arr[i][j+1] > 0)
     62                 {
     63                     i++;
     64                     dir = 1;
     65                 }
     66                 else j++; break;
     67             }
     68             case 1:
     69             {
     70                 if(i+1 == m || arr[i+1][j] > 0)
     71                 {
     72                     j--;
     73                     dir = 2;
     74                 }
     75                 else i++; break;
     76             }
     77             case 2:
     78             {
     79                 if(j - 1 < 0 || arr[i][j-1] > 0)
     80                 {
     81                     i--;
     82                     dir = 3;
     83                 }
     84                 else j--; break;
     85             }
     86             case 3:
     87             {
     88                 if(arr[i-1][j] > 0)
     89                 {
     90                     j++;
     91                     dir = 0;
     92                 }
     93                 else i--; break;
     94             }
     95         }
     96         temp++;
     97     }
     98     
     99     //打印数组
    100     for(i=0; i<m; i++)
    101     {
    102         for(j=0; j<m; j++)
    103         {
    104             printf("%3d",arr[i][j]);
    105         }
    106         printf("
    ");
    107     }
    108     return 0;
    109 }



  • 相关阅读:
    Python中yield和yield from区别
    Python基础05编码问题
    Python eval()函数
    Python异常大全
    Python基础08 内置函数
    Python os和sys模块基本操作
    git学习(3)-本地标签管理
    ubuntu 安装 node 以及升级更新到最新版本
    git学习(2)-分支管理
    git学习(1)-git基础
  • 原文地址:https://www.cnblogs.com/lhy5678888/p/4394157.html
Copyright © 2020-2023  润新知