33 蛇形填数
2015-08-02 16:58
323 查看
蛇形填数
时间限制: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
变态的蛇形填数,恶心的循环控制............
很久以前就见识过这个题,只是无从下手啊,好在现在学的东西多了点,敢做了....然后开始敲代码,需要用个二维数组来存储每个值,然后双循环输出.....
第一次做这样的题,也是无从下手,循环调了半天,才总算运行成功,提交 ac 了........这个题完全是循环控制格式的题,基本上不需要思路,唯一需要注意的是,需要多个循环分别控制二维数组的填数顺序,有四条边,所以需要四个,还需要来回转圈打表,所以外层也需要一个循环...............
#include<stdio.h>
#include<string.h>
int x[105][105];
int main()
{
int n,i,j,k,l,s;;
while(~scanf("%d",&n))
{
s=1;
for(i=0;i<n;++i)//控制打的长度以及次数.....
{
for(j=i;j<n-i;++j)//控制 从上到下
{
x[j][n-i-1]=s++;
}
for(j=n-i-2;j>=i;--j)//控制 从右到左
{
x[n-i-1][j]=s++;
}
for(j=n-i-2;j>=i;--j)//控制 从下到上
{
x[j][i]=s++;
}
for(j=i+1;j<n-i-1;++j)//控制 从左到右
{
x[i][j]=s++;
}
}
for(i=0;i<n;++i)
{
for(j=0;j<n-1;++j)
{
printf("%d ",x[i][j]);
}
printf("%d\n",x[i][j]);
}
}
return 0;
}
相关文章推荐
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- [深入理解Android卷一全文-第七章]深入理解Audio系统
- [深入理解Android卷一全文-第八章]深入理解Surface系统
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- 设计模式--工厂模式
- iOS UIScrollView
- [深入理解Android卷一全文-第六章]深入理解Binder
- C语言编程入门——指针与函数、数组
- 第一篇T语言实例开发(版本5.3),带错误检测的加减乘除运算器
- Coursera台大机器学习技法课程笔记10-Random forest
- [leedcode 168] Excel Sheet Column Title
- Searching for Nessy
- HibernateTemplate实现分页
- JSON4:嵌套的JsonObject与JSONArray的取值
- 华为是怎样研发的(3)——专题分析
- 华为是怎样研发的(4)——器件选型
- Photoshop 画笔工具下的模式选择的使用
- Tarena - 转义字符与类型转换
- @MappedSuperclass 介绍
- HDOJ 5298 Solid Geometry Homework