有关蛇形填数的问题
来源:互联网 发布:windows怎么连接wifi 编辑:程序博客网 时间:2024/05/21 17:41
最常见的蛇形填数问题是:在n*n方阵里填入1,2,3,......,n*n,要求填成蛇形。
下面我就直接上代码了,代码都是可以直接在编译器上运行的。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define len 1000+5
int vec[len][len] = { 0 };
int main()
{
int x, y, k,n=0,r=0;
scanf("%d", &k);
r = vec[x = 0][y = 0] = 1;
while (n < (k + 1) / 2)//当然我们在这儿也可以变换一下:r<k*k,这里要想一下为什么不可以写成r<=k*k
{
while (y + 1 < k && !vec[x][y + 1]) { vec[x][++y] = ++r; }
while (x + 1 < k && !vec[x + 1][y]) { vec[++x][y] = ++r; }
while (y - 1 >= 0 && !vec[x][y - 1]){ vec[x][--y] = ++r; }
while (x - 1 >= 0 && !vec[x - 1][y]) { vec[--x][y] = ++r; }
n++;
}
for (int i = 0; i < k; i++)
{
for (int j = 0; j < k; j++)
{
printf("%3d", vec[i][j]);
}
printf("\n");
}
system("pause");
}
这种问题的变种:
问题描述如下:
时间限制:1000 ms | 内存限制:65535 KB
【问题描述】
peter喜欢玩字母游戏,于是他编写了一个有趣的游戏。游戏规则是在一个 (N-1) * N的表格里填写字母,规则:对于每个输入的N,由 (N-1) * N的字母区域的左上角开始,从字母A开始逆时针填充一个字母区域,乘积若超过26继续由新一组的A、B、C„„填充,不要求输出边框。
【输入】
多组测试数据(数据量在100组以内)。每组测试数据只有一行为一个整数N(1<=N<=30),表示表格的宽度。
【输出】
对于每组输入数据,输出N-1行,为填完的表格(N-1行,每行N个整数,每个数字之间用空格隔开)。
【样例输入】
5
【样例输出】
代表一个4*5的顺时针旋转的字母区域,其样式如下:
A B C D E
N O P Q F
M T S R G
L K J I H
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define len 1000+5
char vec[len][len] = { 0 };
int main()
{
int x, y, k, n=0;
char v;
scanf("%d", &k);
v = vec[x=0][y=0] = 'A';
while (n < (k + 1) / 2)
{
while (y + 1 < k && !vec[x][y + 1])
{
if (vec[x][y] == 'Z')
{
v = 'A';
vec[x][++y] =v;
}
else
{
vec[x][++y] = ++v;
}
}
while (x + 1 < k-1 && !vec[x + 1][y])
{
if (vec[x][y] == 'Z')
{
v = 'A';
vec[++x][y] = v;
}
else
{
vec[++x][y] = ++v;
}
}
while (y - 1 >= 0 && !vec[x][y - 1])
{
if (vec[x][y] == 'Z')
{
v = 'A';
vec[x][--y] = v;
}
else
{
vec[x][--y] = ++v;
}
}
while (x - 1 >= 1 && !vec[x - 1][y])
{
if (vec[x][y] == 'Z')
{
v = 'A';
vec[--x][y] = v;
}
else
{
vec[--x][y] = ++v;
}
}
n++;
}
for (int i = 0; i < k-1; i++)
{
for (int j = 0; j < k; j++)
{
printf("%3c ", vec[i][j]);
}
printf("\n");
}
system("pause");
}
以上代码都是在vs2013上测试发布的
- 有关蛇形填数的问题
- 有关蛇形填数
- 蛇形填数问题
- 蛇形填数问题
- 蛇形填数问题
- 质数的蛇形填数
- 蛇形填数的理解
- 用递归解决蛇形填数的问题
- 蛇形填数问题(ACM入门)
- 关于蛇形填数问题求解
- NYOJ-33蛇形填数问题
- 蛇形填数的递归实现
- 矩形的逆时针蛇形填数
- 蛇形填数
- 算法:蛇形填数
- 蛇形填数
- 蛇形填数
- 蛇形填数
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- hdu 5652 India and China Origins (并查集)
- opencv目录结构
- myselipse中创建web projects
- linux获取时间函数介绍
- 有关蛇形填数的问题
- iOS-获取当前View所在的控制器
- 学习Javascript闭包(Closure)
- 数据结构:排序算法总结
- <响应式布局>1---响应式布局介绍
- WEB前端开发书籍推荐
- Linux线程的前世今生
- ui-router搭建的angularjs模板
- Springmvc中视图向控制器传输参数的一种方法