[算法]蛇形数组算法
//
// main.c
// test2
//
// Created by丁小未on 13-7-14.
// Copyright (c) 2013年dingxiaowei. All rights reserved.
//
//蛇形函数问题
#include<stdio.h>
#include<string.h>
voidmain()
{
inti =0,n,k =1;
printf("请输入N:");
scanf("%d",&n); //
intj = 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++;
j++;
while(j<=n-1&&s[i][j]==0&&k<=n*n) {s[i][j++] = k++;}
i++;
j--;
}
//打印输出
for(intx =0;x<n;x++)
{
for(inty =0;y<n;y++)
{
if(s[x][y]<10)
printf("%d ",s[x][y]);
else
printf("%d ",s[x][y]);
}
printf("\n");
}
}
结果:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。