zoukankan      html  css  js  c++  java
  • 09-语言入门-09-蛇形填数

     
    描述
    在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
    10 11 12 1
    9 16 13 2
    8 15 14 3
    7 6 5 4

    输入
    直接输入方陈的维数,即n的值。(n<=100)

    输出
    输出结果是蛇形方阵。

    样例输入
    3

    样例输出
    7 8 1
    6 9 2
    5 4 3
     
    #include <stdio.h>
    #include <stdlib.h>

    static void setArr(int **arr,int readNum);
    static void printArr(int **arr,int num);

    int main()
    {
         int readNum = 0;
         scanf("%d",&readNum);
         getchar();
        
         int **arr = (int**)malloc(sizeof(int*)*readNum);
         int rowIndex = 0;
         for(;rowIndex < readNum;++rowIndex)
         {
              arr[rowIndex] = (int*)malloc(sizeof(int)*readNum);
         }
        
         setArr(arr,readNum);
         printArr(arr,readNum);
             
         rowIndex = 0;
         for(;rowIndex < readNum;++rowIndex)
         {
              free(arr[rowIndex]);
         }
         free(arr);
        
        
         return 0;
    }

    static void setArr(int **arr,int readNum)
    {
         int i=0;
         int flag = readNum;
         int colIndex = readNum-1;
         int rowIndex = 0;
         int maxNum = readNum*readNum;
         while(i<maxNum) //如果是偶数,则最大一个值在上侧执行完毕后就结束了
         {
              colIndex = flag-1;
             
              if(i == maxNum-1) //如果是奇数方阵,则最后一个数是最后一个最大值,特殊处理后结束
              {
                   arr[rowIndex][colIndex] = ++i;
                   break;
              }
             
              //右侧,行+,列不变
              for(;rowIndex<flag-1 && i<=maxNum;++rowIndex)
              {
                   arr[rowIndex][colIndex] = ++i;
              }
             
              //下侧,行不变 列-
              for(;colIndex>readNum-flag && i<=maxNum;--colIndex)
              {
                   arr[rowIndex][colIndex] = ++i;
              }
             
              //左侧,行-,列不变
              for(;rowIndex>readNum-flag && i<=maxNum;--rowIndex)
              {
                   arr[rowIndex][colIndex] = ++i;
              }
             
              //上侧,行不变,列++
              for(;colIndex<flag-1 && i<=maxNum;++colIndex)
              {
                   arr[rowIndex][colIndex] = ++i;
              }
             
              --flag;
              ++rowIndex;
         }
    }

    static void printArr(int **arr,int num)
    {
         int     rowIndex = 0;
         for(;rowIndex<num;++rowIndex)
         {
              int colIndex = 0;
              for(;colIndex < num;++colIndex)
              {
                   printf("%d ",arr[rowIndex][colIndex]);
              }
              printf(" ");
         }
    }
  • 相关阅读:
    配置文件
    ajax
    网线颜色排序
    cs程序添加初始化加载
    后台设置gridview不换行
    js 经典正则判断 一个字符串是否包含另一个字符串
    窗体关闭事件
    oracle根据视图删除表
    (字符串)哈希
    (字符串)哈希
  • 原文地址:https://www.cnblogs.com/sharpfeng/p/5141207.html
Copyright © 2011-2022 走看看