蛇形填数

原创 2015年11月17日 20:03:16

蛇形填数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
在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


既然是n*n的填数问题 就先引入一个n*n的二位数组 从最右的一端开始填数 然后向下 再向左 再向上 ......

想法很简单 实际编程或许会比较难 代码如下

#include <stdio.h>
int main()
{
int fun();
fun();
return 0;
}


int fun()
{
int n,i=-1,j,x=0,y=0,num=0;
int a[100][100];
scanf("%d",&n);
j=n-1;
while(1)
{//保证每次检测到后一个数 然后用 i++/i--/j++/j--复位 

for(i++;i<n-x;i++)
{
num++;
a[i][j]=num;
}
i--;
if(num>=n*n)
{
break;
}
for(j--;j>=y;j--)
{
num++;
a[i][j]=num;
}
j++;
if(num>=n*n)
{
break;
}
for(i--;i>=x;i--)
{
num++;
a[i][j]=num;
}
i++;
if(num>=n*n)
{
break;
}
for(j++;j<n-y-1;j++)
{
num++;
a[i][j]=num;
}
j--;
if(num>=n*n)
{
break;
}
x++;
y++;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}



7 8 16 9 25 4 3

相关文章推荐

C++蛇形填数

  • 2013年07月24日 00:21
  • 2KB
  • 下载

回形填数(蛇形填数)

  • 2013年05月07日 15:13
  • 702B
  • 下载

用递归解决蛇形填数的问题

题目:来自南阳理工学院oj      本文提出一种递归的方法,可供参考。      我们分析一下这个蛇形矩阵的形成过程:先由右侧起第一列由上到下填写(矩阵元素数字递增),到达规定的个数后,自右向左填写...

《算法竞赛入门经典》第三章(蛇形填数)

自己的#pragma warning(disable:4996) #include #include #include #include #include #include #include #inc...

NYOJ 33 蛇形填数

蛇形填数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为: 10 11 12 1 9 ...

蛇形填数 关于循环的灵活使用

在n*n方针中填入1,2,3,……,n*n,要求填成蛇形,例如n=4时方阵为: 10  11  12  1   9  16  13  2   8  15  14  3   7    6    5  4...

ACM-蛇形填数

/* 先从数组的最右上端开始填数,需要填的次数为 N * 2 - 1 次。(若N为3,则需要 3 * 2 - 1 = 5 次) 填充的方向为下、左、上、右。填充的次数:首次为N次,后面的两轮为N-1...
  • sq_llqt
  • sq_llqt
  • 2015年11月04日 10:28
  • 84

南邮 OJ 1094 蛇形填数

蛇形填数 时间限制(普通/Java) : 5000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 1058            测试通过 :...

NYOJ蛇形填数(二)

蛇形填数(二) 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 1 2 3 4 5 12 13 14 6 11 15 7 10 8 9...

swustoj蛇形填数(1183)

在n*m的方阵里填入1,2,3,...,要求添成蛇形。其中m,n 1-2-3-4        |  0-1-2 5  |     |  9-8-7-6  填数方向为左下右上。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:蛇形填数
举报原因:
原因补充:

(最多只允许输入30个字)