zoukankan      html  css  js  c++  java
  • 蛇形填数 ——C语言

    蛇形填数:

    在n*n的方阵里填入1,2,...,n*n,要求填成蛇形。例如,n=4的方阵为

    上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n<=8。

      

        #include<stdio.h>
        #include<string.h>
        #define max 20
        int a[max][max];
        int main(){
            int x,y,n,tot=0;
            scanf("%d",&n);
            memset(a,0,sizeof(a));
            tot=a[x=0][y=n-1]=1;//从右上角开始,计数为1
            while(tot<n*n){
                while(x+1<n && !a[x+1][y]) a[++x][y]=++tot;//往下走。先判断是否越界并且对应下标的数组值是否为空,最后赋值。
                while(y-1>=0 && !a[x][y-1]) a[x][--y]=++tot;
                while(x-1>=0 && !a[x-1][y]) a[--x][y]=++tot;
                while(y+1<n && !a[x][y+1]) a[x][++y]=++tot;
            }
            for(x=0;x<n;x++){
                for(y=0;y<n;y++) printf("%3d",a[x][y]);
            printf("
    ");
            }
            return 0;
        }

     

     注意:

    在多数情况下,最好在做一件事之前检查是不是可以做,而不要做完再后悔。

    首先外层while循环判断条件为tot的值小于蛇形填数走到最后一步对应的值;

    上面代码中四个while循环中的++x,++tot,先自加然后再赋值。

  • 相关阅读:
    this指向
    作用域链
    入门
    一、servlet之初见
    jdbc之mysql
    第六章、树和二叉树
    第七章、暴力求解法
    机试
    第十三章、字符串
    栈和队列
  • 原文地址:https://www.cnblogs.com/codercql/p/12236310.html
Copyright © 2011-2022 走看看