NYOJ蛇形填数(二)

蛇形填数(二)

时间限制:2000 ms  |  内存限制:65535 KB

难度:3

描述
1  2  3  4  5
12 13 14 6
11 15 7
10 8
9

跟蛇形填数一样,只是填数要求按照三角形填。注意每组数据之间用空行隔开

输入
第一行有一个N,表示N组测试数据

接下来每组数据包括一个数字X,表示三角形的边长,0< X <1000

输出
输出之后填好之后的图
样例输入
2
5
4
样例输出
1  2  3  4  5
12 13 14 6
11 15 7
10 8
9

1  2  3  4
9  10 5
8  6
7
来源

NBOJ

#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int max=1005;
int a[max][max];
int main()
{
	int n,k,i,j,l,sign;
	scanf("%d",&k);
	while(k--){
		scanf("%d",&n);
		memset(a,0,sizeof(a));
		a[0][0]=1;
		i=j=0;
		l=n;
		sign=0;
		if(n==1){
			printf("1\n");
			printf("\n");continue;
		}
		while(1){
			sign=1;
			while(1){
				if(a[i][j+1]!=0){break;}
				a[i][++j]=a[i][j-1]+1;
				if(j==n-1)break;
				sign=0;
			}
			while(1){
				if(a[i+1][j-1]!=0){break;}
				a[++i][--j]=a[i-1][j+1]+1;
				if(i==n-1)break;
				sign=0;
			}
			while(1){
				if(a[i-1][j]!=0){break;}
				a[--i][j]=a[i+1][j]+1;
				sign=0;
			}
			if(sign)break;
		}
		for(i=0;i<l;++i){
			for(j=0;j<l-i;++j)
			printf("%d ",a[i][j]);
			printf("\n");
		}
		printf("\n");
	}
	return 0;
}        
时间: 2024-10-03 22:27:27

NYOJ蛇形填数(二)的相关文章

nyoj 852 蛇形填数(二)【循环+数组】

蛇形填数(二) 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 1 2 3 4 5 12 13 14 6 11 15 7 10 8 9 跟蛇形填数一样,只是填数要求按照三角形填.注意每组数据之间用空行隔开 输入 第一行有一个N,表示N组测试数据 接下来每组数据包括一个数字X,表示三角形的边长,0< X <1000 输出 输出之后填好之后的图 样例输入 2 5 4 样例输出 1 2 3 4 5 12 13 14 6 11 15 7 10 8 9 1 2 3 4 9

nyoj 33 蛇形填数

蛇形填数 时间限制: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 1 #include <iostream> 2 using namespace s

nyoj 33 蛇形填数【循环+数组】

蛇形填数 时间限制: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 来源 算法经典 上传者 首席执行官 思路: 通过while循环来控制走向(下,左,上,右),并将每一步的结果(结果

python版蛇形填数

引 入 蛇形填数,一道经典有趣的算法入门题.这里用python来实现. 代码 vim snake.py #!/usr/bin/env python #-*- coding: utf-8 -*- #矩阵初始化函数 def genMatrix(rows,cols):       #用二维数组来代表矩阵     matrix = [[0 for col in range(cols)] for row in range(rows)]       for i in range(rows):        

NYOJ33 蛇形填数

一.原题 在n*n方阵里填入1,2,...,n*n.要求填成蛇形.例如n=4时方阵为: 10  11  12  1 9  16  13  2 8  15  14  3 7    6    5  4 (题目来源:<算法竞赛入门经典>[刘汝佳]) 二.题目源代码 #include <stdio.h> #include <string.h> #define MAXN 10 int a[MAXN][MAXN]; int main() { int n,x,y,tot=0; sca

&lt;蛇形填数&gt;--算法竞赛 入门经典(第2版)- 3.1 数组 程序3-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 <= 8 . 类比上面这种数学中的矩阵,我们可以考虑使用一个二维数组来储存. 解题思路:从右上角开始往下填数,当到底的时候转向左填值,当到左边的边的时候转向上填数,当到最上面的时候转向右填值...依次类推.第一轮转圈

3-3 蛇形填数

在n*n方阵里填入1,2,...,n*n,要求填成蛇形,例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出.n≤8.分析: 定义一个二维数组存储方阵,先是下,到不能填为止,然后是左,接着是上,最后是右. 代码: #include<stdio.h> #include<string.h> #define MAXN 10 int a[MAXN][MAXN]; int main() { int

&lt;蛇形填数&gt;--算法竞赛 入门经典(第2版) 程序3-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 <= 8 . 类比上面这种数学中的矩阵,我们可以考虑使用一个二维数组来储存. 解题思路:从右上角开始往下填数,当到底的时候转向左填值,当到左边的边的时候转向上填数,当到最上面的时候转向右填值...依次类推.第一轮转圈的判断

梦工厂实验室 蛇形填数 dfs

问题 D: 蛇形填数 时间限制: 3 Sec  内存限制: 64 MB提交: 28  解决: 5[提交][状态][讨论版] 题目描述 在n*n方阵里填入1,2,...,n*n,要求填成蛇形.例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4 输入 直接输入方阵的维数,即n的值.(n<=100) 输出 输出结果是蛇形方阵. 样例输入 3 样例输出 7 8 1 6 9 2 5 4 3 一类题型.四个方向dfs,当走不通时,t++改变方向,否则一直往一个方向走.