南阳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,要求填成蛇形。相关推荐

  1. 南阳oj入门题-蛇形填数

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

  2. 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的值.( ...

  3. 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的值.( ...

  4. 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的值 ...

  5. 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& ...

  6. 2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数

    2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数 Ideas 这题其实严格意义上属于一道找规律的题目,并不是啥算法题. 我们可以先按照它的规律多写几行. 1 2 6 7 ...

  7. 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数

    这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...

  8. 计算机精英协会考核题 —— 第二题:蛇形填数

    题目 2.蛇形填数 给出 n * n 方阵,要求从 1 开始按顺序依次填写,填写方式如下: n = 4 时, 1 8 9 16 2 7 10 15 3 6 11 14 4 5 12 13 输入 n,请 ...

  9. 第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)

    试题 C: 蛇形填数 本题总分:10 分 [问题描述] 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 容易看出矩阵第二行第二列中的数是 5.请你计算矩阵中第 2 ...

  10. 信息学奥赛一本通 2045:【例5.13】蛇形填数

    [题目链接] ybt 2045:[例5.13]蛇形填数 [题目考点] 1. 二维数组 2. 方向数组(可能用到) int dir[4][2] = {{1,0},{0,-1},{-1,0},{0,1}} ...

最新文章

  1. 现代hy-9600音响_从音响工程师到软件工程师-为什么我要学习编码
  2. 递归计算Linux目录中的文件
  3. 【转】推荐两款富文本编辑器:NicEdit和Kindeditor
  4. 黄聪: bootstrap 多模态框实现
  5. linux 系统打造man中文帮助手册图解
  6. Learn Python the Hard Way: while循环
  7. Linux内核中读写文件数据的方法
  8. C/C++输入输出流
  9. docker php示例,Docker PHP 例子
  10. 【计算机组成原理】双端口RAM和多模块存储器
  11. WordPress主题LensNews1.8模板源码,WP多功能新闻积分商城主题
  12. python面向对象学习(七)单例
  13. OpenStack实践系列②认证服务Keystone
  14. 我是如何寻找数据集的,一些个人私藏
  15. Symbol在对象中的作用
  16. 王垠受邀面试阿里P9,被P10面跪后网上怒发文,惨打325的P10赵海平回应了!
  17. 维多利亚计算机专业怎么样,维多利亚大学计算机科学专业 学生要学哪些内容...
  18. LIME-论文阅读笔记
  19. leetcode714
  20. 服务器上文件共享有哪些协议,Windows中的文件共享协议

热门文章

  1. 【笔记】2022.06.20 python数据分析三大神器numpy、pandas、matplotlib
  2. 树莓派(Raspberry Pi)安装五笔输入法,五笔拼音混合输入法
  3. java 计算正态分布_统计基本概念 期望 方差 均方差 正态分布 Java统计计算
  4. Python机器学习:值得反复练习的8个项目
  5. 如何实现批量截取整个网页完整长截图?内容很多很高浏览器看不全Chrome插件崩溃无需安FireShot,优爱酷批量长网页整页截图系统,设计师推荐的必备好工具好方法web2pic,html2jpeg
  6. 【python练习】摘苹果题
  7. EXCEL,如何进行查找,单条件和多条件查询
  8. iOS开发各种证书问题
  9. springboot引入validation
  10. 在线 服务器 web,web服务器是什么?