蛇形方阵 C语言

2023-11-05

题目描述
给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。

从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。

输入
4
输出
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

思路:
方式1. 题目数据范围实在是太小了,可以直接采用打表的方式.
方式2. 矩阵依次是1 ~ n*n 的数, 从左往右,从上往下,再从右往左,下往上.
所以只要循环的方式可以实现"蛇形"就可以得到答案.

循环遍历的方式

Copy 方式 2 :

#include<stdio.h>
int a[10][10];    //这里定义全局变量,默认数组每个元素初始化为 0 
int main(){
	int n;
	int k = 0; // 蛇形走位的初始值,每次循环成功 ++k; 
	scanf("%d",&n);	
	int x = 1,y = 0; 

	while( k < n*n){
		 
		 // a[x][y+1] 是目标位置 
		//从左往右 , 判断如果没有超过边界并且目标位置没有被覆盖过则可以进行赋值 
		while( y < n  && a[x][y+1] == 0 ) 
		{  a[x][++y] = ++k;}	
		
		//从上往下 , 
		while( x < n  && a[x+1][y] == 0  )
		 { a[++x][y] = ++k;}
		
		//从右往左 
		while( y > 1 && a[x][y-1] == 0  )
		 {  a[x][--y] = ++k;}
		
		//从下往上 
		while( x > 1  && a[x-1][y] == 0  )
		 {  a[--x][y] = ++k;}
	
		
	}

	for(int i = 1; i<= n; i++){
		for(int j = 1; j <= n; j++){
			printf("%3d",a[i][j]); 
		} 
		printf("\n"); 
	}  
	return 0;
} 

Copy 方式1:

#include <iostream>
using namespace std;
int n;
int main () {
	cin >> n;
	if(n == 1)
		cout << "  1\n";
	if(n == 2)
		cout <<"  1  2\n  4  3\n";
	if(n == 3) {
		cout << "  1  2  3\n";
		cout << "  8  9  4\n";
		cout << "  7  6  5\n";
	}
	if(n == 4) {
		cout << "  1  2  3  4\n";
		cout << " 12 13 14  5\n";
		cout << " 11 15 16  6\n";
		cout << " 10  9  8  7\n";
	}
	if(n == 5) {
		cout << "  1  2  3  4  5\n";
		cout << " 16 17 18 19  6\n";
		cout << " 15 24 25 20  7\n";
		cout << " 14 23 22 21  8\n";
		cout << " 13 12 11 10  9\n";
	}
	if(n == 6) {
		cout << "  1  2  3  4  5  6\n";
		cout << " 20 21 22 23 24  7\n";
		cout << " 19 32 33 34 25  8\n" ;
		cout << " 18 31 36 35 26  9\n";
		cout << " 17 30 29 28 27 10\n";
		cout << " 16 15 14 13 12 11\n";
	}
	if(n == 7) {
		cout << "  1  2  3  4  5  6  7\n";
		cout << " 24 25 26 27 28 29  8\n";
		cout << " 23 40 41 42 43 30  9\n";
		cout << " 22 39 48 49 44 31 10\n";
		cout << " 21 38 47 46 45 32 11\n";
		cout << " 20 37 36 35 34 33 12\n";
		cout << " 19 18 17 16 15 14 13\n";
	}
	if(n == 8) {
		cout << "  1  2  3  4  5  6  7  8\n";
		cout << " 28 29 30 31 32 33 34  9\n";
		cout << " 27 48 49 50 51 52 35 10\n";
		cout << " 26 47 60 61 62 53 36 11\n";
		cout << " 25 46 59 64 63 54 37 12\n";
		cout << " 24 45 58 57 56 55 38 13\n";
		cout << " 23 44 43 42 41 40 39 14\n";
		cout << " 22 21 20 19 18 17 16 15\n";
	}
	if(n == 9) {
		cout << "  1  2  3  4  5  6  7  8  9\n";
		cout << " 32 33 34 35 36 37 38 39 10\n";
		cout << " 31 56 57 58 59 60 61 40 11\n";
		cout << " 30 55 72 73 74 75 62 41 12\n";
		cout << " 29 54 71 80 81 76 63 42 13\n";
		cout << " 28 53 70 79 78 77 64 43 14\n";
		cout << " 27 52 69 68 67 66 65 44 15\n";
		cout << " 26 51 50 49 48 47 46 45 16\n";
		cout << " 25 24 23 22 21 20 19 18 17\n";
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蛇形方阵 C语言 的相关文章

随机推荐

  • Redis可视化客户端

    Redis是一个超精简的基于内存的键值对数据库 key value 一般对并发有一定要求的应用都用其储存session 乃至整个数据库 redis的可视化客户端目前较流行的有三个 Redis Client Redis Desktop Man
  • Vue 3 中的 Suspense 是什么?如何使用它

    Vue 3 中的 Suspense 是什么 如何使用它 介绍 Vue 3 是 Vue js 的最新版本 引入了一些令人兴奋的新功能和改进 其中之一是 Suspense 中文翻译为 暂停 机制 Suspense 是一种用于处理异步组件和延迟加
  • 教你App如何上架应用宝----腾讯开放开发平台

    上架app视频 http v youku com v show id XMTU0NTM1MTczNg html from y1 7 1 2 paction app在腾讯的 应用宝 市场 输入 czg学习演示 可以下载 注意 上架app视频的
  • 冒泡排序算法的Python实现(头歌实践教学平台)

    第1关 冒泡排序的实现 任务描述 本关任务 编写代码实现冒泡排序 相关知识 为了完成本关任务 你需要掌握 1 如何实现冒泡排序 2 冒泡排序的算法分析 冒泡排序 冒泡排序又称起泡排序 它的算法思路在于对无序表进行多趟比较交换 每趟都包括了多
  • ERROR: cannot launch node of type [turtlesim/turtlesim_node]

    这个之前路径是正确的 没有文档里说的那个BUG 为什么后续运行roslaunch rename01 node start turtle launch 的时候还是会报错呢 还是会出现 ERROR cannot launch node of t
  • 继承的详细介绍与理解,看了就懂

    继承的介绍 继承的概念及定义 定义格式 继承基类成员访问方式的变化 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 复杂的菱形继承及菱形虚拟继承 总结 继承的概念及定义 继承也是面向对象的三大特性
  • ASM学习——开端

    什么是ASM ASM是一个操作java字节码的类库 ASM的操作对象 字节码 bytecode 数据 一个java文件经过java编译器javac编译之后会生成 class文件 在 class文件中 存储的就是字节码数据 ASM的操作对象就
  • XSL-FO 高级技术4

    概述 第 1 页 共7 页 既然您已经了解了定义打印页面外观的基本元素 现在让我们研究其它 XSL FO 元素 这些元素可以使 PDF 文档看上去更专业 本章将讨论下列主题 定义多页布局 添加页眉和页脚 对页面编号 用 Page x of
  • verilog/systemverilog的随机数生成问题

    Verilog SystemVerilog 里面的随机函数 Verilog系统自带一些随机数发生函数 最常用的有random 语法如下 random seed 指定概率分布 如果希望生成的随机数具有一定的概率分布 还有一些系统函数可以选用
  • webview页面有很多图片加载慢的处理方式

    dangwebview加载有很多图片的网页时会很慢 此时可以用webview的setBlockNetworkImage方法 在开始加载的时候使用 webview getSettings setBlockNetworkImage true 在
  • 云计算运营—01华为云计算解决方案介绍

    华为云计算解决方案介绍 文章目录 华为云计算解决方案介绍 一 FusionSphere虚拟化解决方案介绍 云操作系统架构 FusionCompute组成 FusionManager FusionStorage FS相比传统存储的优势 应用场
  • matplotlib 自带绘图样式效果展示速查(28种,全)

    matplotlib 自带绘图样式效果展示速查 28种 全 目 录 一 matplotlib 自带所有绘图样式效果展示 0 没有加style时的绘图风格 1 加 bmh style时的绘图风格 2 加 classic style时的绘图风格
  • 详解浏览器渲染原理及流程

    今天来分享一下浏览器的渲染原理及流程 前言 先来看看 Chrome 浏览器的多进程架构 通常 我们打包出来的 HTML CSS JavaScript 等文件 经过浏览器运行之后就会显示出页面 这个过程就是浏览器的渲染进程来操作实现的 渲染进
  • 网络通信设备之网络路由技术详解

    一 路由器简介 路由器是构成IP网络的核心 其最基本的作用就是连接不同类型的网络 智能选择最佳的信息传送线路 除此以外 路由器还具有访问控制功能 路由器也可以算作是一台专用计算机 可以听懂并翻译各种网络协议 就像一个会讲各种语言的人一样 1
  • 50个查询系列-第三个查询:查询所有同学的学号、姓名、选课数、总成绩;

    查询最主要的就是确定查询的主表 和辅助表 这个的话我们可以确认是用子查询 主表就是我们的学生表 tblstudent可以查到学生的学号 姓名 辅助表就是成绩表 tblscore 自己写的语句如下 SELECT tblstudent StuI
  • 在虚拟机中安装Windows Server2016

    先介绍一些比较有用的文章 但可能与本文没有直接关系 将windows server 2016改造为像windows 10一样适合个人使用的系统 Windows Server 2016 配置指南 事先说明 千万不要提前分区 没有意义 什么都不
  • 十一、Node.js

    一 Node js是什么 在了解Node js之前 我们先去了解一下什么叫v8引擎 这里参考一下其他博主的资料 聊聊V8引擎 努力学习前端的77的博客 CSDN博客 这个时候我们再去看下Node js的定义 官方对Node js的定义 No
  • MySQL利用AES_ENCRYPT()与AES_DECRYPT()加解密的正确方法示例

    前言 最近在工作中遇到一个需求是这样的 需要在使用AES ENCRYPT 函数将明文加密 存储在MySQL中 但是遇到了一些问题 下面就来详细介绍下 说将加密后的密文 解密取出来是NULL 看了一下 她发过来的表结构 再看了她通过AES D
  • java8日期(Date,LocalDate,LocalTime,LocalDateTime),以及处理时间的方法

    1 LocalDate 年月日 常用方法 1 1 1 当月最大时间 不包含时分秒 LocalDate lastday date with TemporalAdjusters lastDayOfMonth 1 1 2 当月最小时间 不包含时分
  • 蛇形方阵 C语言

    题目描述 给出一个不大于 9 的正整数 n 输出 n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入 4 输出 1 2 3 4 12 13 14 5