[南阳OJ-No.33]蛇形填数|在n*n方陈里填入1,2,...,n*n,要求填成蛇形。
南阳OJ-No.33
时间限制3000ms,空间限制65535KB,难度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
思路:4 连通问题
n=1,特殊情况
n>2,
我先画出了n=2,3,4,5,6的蛇形数组进行观察,数组构建过程是从右上角的数字1开始,然后按照顺时针方向依次构建。方阵中每个格子相邻的都有四个格子。观察构建顺序,数字存放顺序为顺时针方向,即下、左、上、右,进行循环判断填充,注意判断数组下标不越界
JAVA
时间83,内存1475
import java.util.Scanner;public class Main {public static Scanner cin = new Scanner(System.in);public static int N = cin.nextInt(), x = 0, y = N-1, count = 1;public static int[][] num = new int[N][N];static {for (int x=0; x<N; x++) {for (int y=0; y<N; y++) {num[x][y] = 0;} }num[x][y] = 1;}public static void print(int[][] num) {for (int x=0; x<N; x++) {for (int y=0; y<N; y++) {System.out.print(num[x][y] + " ");}System.out.println();}}public static void main(String[] args) throws Exception { while(count < N*N) {while(x<N-1 && num[x+1][y]==0)num[++x][y] = ++count;while(y>0 && num[x][y-1]==0)num[x][--y] = ++count;while(x>0 && num[x-1][y]==0)num[--x][y] = ++count;while(y<N-1 && num[x][y+1]==0)num[x][++y] = ++count;}print(num);}
}
这个是在南阳OJ中扒出来的以为大神,不懂啊(⊙﹏⊙)
时间36,内存676
import java.util.Scanner;public class Main{public static void main(String[] args) {int i,j,h = 0;short num = 1;Scanner scanner = new Scanner(System.in);short n = scanner.nextShort();short[][] array = new short[n][n];int hmax = (n+1)>>1;for ( h = 0; h <= hmax; h++) {if (h==hmax&&n%2!=0) {array[n>>1][n>>1] = num;}else {for ( i =h; i < n-1-h; i++) {array[i][n-1-h]=num++;}for ( i = n-1-h; i >h ; i--) {array[n-1-h][i]=num++;}for ( i = n-1-h; i >h ; i--) {array[i][h]=num++;}for ( i = h; i < n-1-h; i++) {array[h][i] = num++;}}}StringBuffer sb = new StringBuffer();for ( i = 0; i < array.length; i++) {for ( j = 0; j < array[i].length; j++) {sb.append(array[i][j]).append(" ");}sb.append("\n");}System.out.print(sb);}
}
C++
时间4,内存240
#include <iostream>
using namespace std;int main()
{int N, x, y, count;cin >> N;x = 0;y = N-1;count = 1;int num[N][N];for (int x=0; x<N; x++) {for (int y=0; y<N; y++) {num[x][y] = 0;} }num[x][y] = 1;while(count < N*N) {while(x<N-1 && num[x+1][y]==0)num[++x][y] = ++count;while(y>0 && num[x][y-1]==0)num[x][--y] = ++count;while(x>0 && num[x-1][y]==0)num[--x][y] = ++count;while(y<N-1 && num[x][y+1]==0)num[x][++y] = ++count;}for (int x=0; x<N; x++) {for (int y=0; y<N; y++) {cout << num[x][y] << " ";}cout << endl;}return 0;
}
[南阳OJ-No.33]蛇形填数|在n*n方陈里填入1,2,...,n*n,要求填成蛇形。相关推荐
- 南阳oj入门题-蛇形填数
/** 蛇形填数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为: 10 11 12 1 9 16 ...
- C语言(24)蛇形填数
描述 在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的值.( ...
- 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 输入: 直接输入方陈的维数,即n的值.( ...
- C/C++ 蛇形填数
题目描述 在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的值 ...
- NYOJ-33-蛇形填数
描述 在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& ...
- 2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数
2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数 Ideas 这题其实严格意义上属于一道找规律的题目,并不是啥算法题. 我们可以先按照它的规律多写几行. 1 2 6 7 ...
- 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数
这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...
- 计算机精英协会考核题 —— 第二题:蛇形填数
题目 2.蛇形填数 给出 n * n 方阵,要求从 1 开始按顺序依次填写,填写方式如下: n = 4 时, 1 8 9 16 2 7 10 15 3 6 11 14 4 5 12 13 输入 n,请 ...
- 第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)
试题 C: 蛇形填数 本题总分:10 分 [问题描述] 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 容易看出矩阵第二行第二列中的数是 5.请你计算矩阵中第 2 ...
- 信息学奥赛一本通 2045:【例5.13】蛇形填数
[题目链接] ybt 2045:[例5.13]蛇形填数 [题目考点] 1. 二维数组 2. 方向数组(可能用到) int dir[4][2] = {{1,0},{0,-1},{-1,0},{0,1}} ...
最新文章
- 现代hy-9600音响_从音响工程师到软件工程师-为什么我要学习编码
- 递归计算Linux目录中的文件
- 【转】推荐两款富文本编辑器:NicEdit和Kindeditor
- 黄聪: bootstrap 多模态框实现
- linux 系统打造man中文帮助手册图解
- Learn Python the Hard Way: while循环
- Linux内核中读写文件数据的方法
- C/C++输入输出流
- docker php示例,Docker PHP 例子
- 【计算机组成原理】双端口RAM和多模块存储器
- WordPress主题LensNews1.8模板源码,WP多功能新闻积分商城主题
- python面向对象学习(七)单例
- OpenStack实践系列②认证服务Keystone
- 我是如何寻找数据集的,一些个人私藏
- Symbol在对象中的作用
- 王垠受邀面试阿里P9,被P10面跪后网上怒发文,惨打325的P10赵海平回应了!
- 维多利亚计算机专业怎么样,维多利亚大学计算机科学专业 学生要学哪些内容...
- LIME-论文阅读笔记
- leetcode714
- 服务器上文件共享有哪些协议,Windows中的文件共享协议
热门文章
- 【笔记】2022.06.20 python数据分析三大神器numpy、pandas、matplotlib
- 树莓派(Raspberry Pi)安装五笔输入法,五笔拼音混合输入法
- java 计算正态分布_统计基本概念 期望 方差 均方差 正态分布 Java统计计算
- Python机器学习:值得反复练习的8个项目
- 如何实现批量截取整个网页完整长截图?内容很多很高浏览器看不全Chrome插件崩溃无需安FireShot,优爱酷批量长网页整页截图系统,设计师推荐的必备好工具好方法web2pic,html2jpeg
- 【python练习】摘苹果题
- EXCEL,如何进行查找,单条件和多条件查询
- iOS开发各种证书问题
- springboot引入validation
- 在线 服务器 web,web服务器是什么?