zoukankan      html  css  js  c++  java
  • C 语言 对角线添充二维数组

      实现 这种 "对角线" 添充二维数组的算法 ,写了一个实现 : 主要是的想法是设定几种状态 比如 :"横加竖减 横减竖加  改变状态横加 改变状态竖加 " 在某个特殊的情况下 改变状态. 就可以用一个循环 来完成了. 

    View Code
     1 #include <stdio.h>
    2
    3 void numBox(int x,int y)
    4 {
    5 int a[x][y]; //二维数组
    6 int i,j; //坐标
    7 int k; //循环变量
    8 int mode = 3; //状态 有三种 一种是 横加竖减 横减竖加 改变状态横加 改变状态竖加
    9 i = j = k = 0; //初始化
    10
    11 for(k = 0;k< x*y;k++)
    12 {
    13 //printf("i = %d j = %d K = %d\n",i,j,k+1);
    14 a[i][j] = k + 1;
    15
    16 if( mode == 0) //如果mode 为 0 则 横加竖减
    17 {
    18 i ++;
    19 j --;
    20 }
    21 else if (mode == 1) //如果mode 为 0 则 横减竖加
    22 {
    23 i -- ;
    24 j ++ ;
    25 }
    26 else // 改变状态横加 改变状态竖加
    27 {
    28 if(i == x -1)
    29 {
    30 mode = 1;
    31 j ++;
    32 continue;
    33 }
    34 else if(j == y -1)
    35 {
    36 mode = 0;
    37 i ++;
    38 continue;
    39 }
    40 else if(i == 0)
    41 {
    42 mode = 0;
    43 j ++;
    44 continue;
    45 }
    46 else
    47 {
    48 mode = 1;
    49 i ++;
    50 continue;
    51 }
    52 }
    53 if(i == 0 || j == 0 || i == x -1 || j == y -1) // 这些特殊值时. 需要把状态改为 3
    54 {
    55 mode = 3;
    56 }
    57 }
    58 //输出
    59 for(int m = 0;m<x;m++)
    60 {
    61 for(int n = 0;n < y;n++)
    62 {
    63 printf("%3d",a[m][n]);
    64 }
    65 printf("\n");
    66 }
    67 }
    68
    69 int main()
    70 {
    71 //可以自定义 二维数组 的长及宽
    72 numBox(3,8); //调用函数
    73 }

    输出的结果:

  • 相关阅读:
    DOM官方文档学习总结
    python安装BeautifulSoup库解析HTML页面
    操作datatable数据
    aod.net连接字符串大全
    jqery对于select的操作
    希尔排序算法
    冒泡排序算法
    归并排序(分治法)
    随机函数
    【题解】LibreOJ #6279. 数列分块入门 3
  • 原文地址:https://www.cnblogs.com/easyfrog/p/2304715.html
Copyright © 2011-2022 走看看