天天看點

[算法]蛇形數組算法

//

//  main.c

//  test2

//  Created by 丁小未 on 13-7-14.

//  Copyright (c) 2013年 dingxiaowei. All rights reserved.

//蛇形函數問題

#include<stdio.h>

#include<string.h>

void main()

{

   int i = 0,n,k = 1;

   printf("請輸入N:");

   scanf("%d",&n);  //

   int j = n-1,s[100][100];

   memset(s,0,sizeof(s));  //記憶體初始化

   while(k<=n*n)

   {

       while(i<=n-1&&s[i][j]==0&&k<=n*n) {s[i++][j] = k++;}

       i--;//不然的話上面一行i++之後越過邊界了

       j--;//不然會覆寫邊角的那個數

       while(j>=0&&s[i][j]==0&&k<=n*n)  {s[i][j--] = k++;}

       j++;

       i--;

       while(i>=0&&s[i][j]==0&&k<=n*n)  {s[i--][j] = k++;}

       i++;

       while(j<=n-1&&s[i][j]==0&&k<=n*n)  {s[i][j++] = k++;}

       j--;

   }

   //列印輸出

   for(int x = 0;x<n;x++)

       for(int y = 0;y<n;y++)

       {

           if(s[x][y]<10)

               printf("%d  ",s[x][y]);

           else

               printf("%d ",s[x][y]);

       }

       printf("\n");

}

結果:

[算法]蛇形數組算法

本文轉蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366174,如需轉載請自行聯系原作者

繼續閱讀