二维数组-----螺旋性矩阵输出

news2024/12/23 23:17:51

题目有点难,ok其实是很难。。。

观察样例输出,不难发现,螺旋数组中元素的递增轨迹为:右右右、下下下、左左左、上上上

 简明为:右、下、左、上。可以设开始递增的元素1的位置为(x,y),那么右的运行轨迹就是:(x,y+1),下就是:(x+1,y),左则是:(x,y-1),上则是:(x-1,y)。则定义两个变量分别表示元素所在位置:x,y;由于螺旋数组中的每一个元素都是一次递增的每次都加1,那么即可定义数组a[x][y],让这个数组等于m,而m每次都要加1。

int n,m,x,y,t,a[19][19];
    scanf("%d",&n);
    m=1;
    x=1;
    y=1;
    x=1;

我们的代码中右一个t变量,它的作用是:判断方向;还有一个细节,为了不让螺旋数组已知旋下去,m虽然也一次累加但大小不能超过m*m。当m<=m*m的时候才执行:右右右、下下下、左左左、上上上,这些操作。可以想到用while循环来解决。

while(m<=n*n){
    a[x][y]=m;
    m++;
    if(t==1){//右
        if(a[x][y+1]>0||x>n||y+1>n||x<1||y+1<1){
            t++;
        }
    }
    if(t==2){//下
        if(a[x+1][y]>0||x+1>n||y>n||x+1<1||y<1){
            t++;
        }
    }
    if(t==3){//左
        if(a[x][y-1]>0||x>n||y-1>n||x<1||y-1<1){
            t++;
        }
    }
    if(t==4){//上
        if(a[x-1][y]>0||x-1>n||y>n||x-1>1||y<1){
            t++;
        }
    }
    if(t>4){
        t=1;
    }
    if(t==1){
        y++;
    }
    if(t==2){
        x++;
    }
    if(t==3){
        y--;
    }
    if(t==4){
        x--;
    }
}

然后拼装:(成就AC)

#include<cstdio>
int n,m,x,y,t,a[19][19];
int main(){
	scanf("%d",&n);
	m=1;
	x=1;
	y=1;
	t=1;
	while(m<=n*n){
		a[x][y]=m;
		m++;
		if(t==1){
			if(a[x][y+1]>0||x>n||y+1>n||x<1||y+1<1){
				t++;
			}
		}
		if(t==2){
			if(a[x+1][y]>0||x+1>n||y>n||x+1<1||y<1){
				t++;
			}
		}
		if(t==3){
			if(a[x][y-1]>0||x>n||y-1>n||x<1||y-1<1){
				t++;
			}
		}
		if(t==4){
			if(a[x-1][y]>0||x-1>n||y>n||x-1<1||y<1){
				t++;
			}
		}
		if(t>4)
		{
			t=1;
		}
		if(t==1){
			y++;
		}
		if(t==2){
			x++;
		}
		if(t==3){
			y--;
		}
		if(t==4){
			x--;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
}

交给读者细品,(发现我很喜欢说啊)。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1883614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单片机语音识别控制蓝牙通信

基于单片机语音识别控制&蓝牙控制 1、Arduino单片机语音控制1.1 直连1.2 蓝牙无线连接1.3 部分核心程序1.4 实物演示 2、51单片机语音控制2.1 直连2.2 蓝牙无线连接2.3 部分核心程序2.4 实物演示 3、STM32单片机语音控制3.1 直连3.2 蓝牙无线连接3.3 部分核心程序3.4 实物演…

AI大模型日报#0701:Meta发布LLM Compiler、扒一扒Sora两带头人博士论文

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff01;《AI大模型日报》今日要点&#xf…

黑马点评下订单-小程序下单没问题但是Postman发送请求失败了,返回401

经过多方探索&#xff0c;这个✓8错误就是由于黑马点评使用了拦截器&#xff0c;我们直接发送请求是会被拦截器拦截下来的&#xff0c;我给出的解决方案是通过配置Postman解决&#xff0c;方法很简单&#xff01; 解决方案 右边的value写上Redis里面登录所用token值就可以了…

无线物联网练习题

文章目录 选择填空简答大题 选择 不属于物联网感知技术的是(A) A:ZigBee B:红外传感器 C:FRID D:传感器 ZigBee是一种无线通信技术&#xff0c;虽然它常用于物联网中作为设备之间的通信手段&#xff0c;但它本身并不是一种感知技术 关于物联网于与互联网的区别的描述&#xff…

技术派全局异常处理

前言 全局的异常处理是Java后端不可或缺的一部分&#xff0c;可以提高代码的健壮性和可维护性。 在我们的开发中&#xff0c;总是难免会碰到一些未经处理的异常&#xff0c;假如没有做全局异常处理&#xff0c;那么我们返回给用户的信息应该是不友好的&#xff0c;很抽象的&am…

【机器学习】基于Transformer的迁移学习:理论与实践

引言 在机器学习领域&#xff0c;迁移学习已成为提升模型训练效率和性能的重要策略&#xff0c;特别是在标注数据稀缺的场景下。Transformer模型自2017年由Google提出以来&#xff0c;在自然语言处理&#xff08;NLP&#xff09;领域取得了突破性进展&#xff0c;并逐渐扩展到…

科普文:一文搞懂jvm原理(三)执行引擎

概叙 科普文&#xff1a;一文搞懂jvm(一)jvm概叙-CSDN博客 科普文&#xff1a;一文搞懂jvm原理(二)类加载器-CSDN博客 前面我们介绍了jvm&#xff0c;jvm主要包括两个子系统和两个组件&#xff1a; Class loader(类装载器) 子系统&#xff0c;Execution engine(执行引擎) 子系…

【吊打面试官系列-MyBatis面试题】模糊查询 like 语句该怎么写?

大家好&#xff0c;我是锋哥。今天分享关于 【模糊查询 like 语句该怎么写?】面试题&#xff0c;希望对大家有帮助&#xff1b; 模糊查询 like 语句该怎么写? 第 1 种&#xff1a;在 Java 代码中添加 sql 通配符。 string wildcardname “%smi%”; list<name> names …

高考不是终点:如何利用教育资源实现人生跃迁?普鲁士教育的利弊,你了解吗?从科举到高考,中国教育的变迁!链接上层,获取核心资源的途径

高考已经结束&#xff0c;这两天分数将会陆续出来&#xff0c;无论结果好坏&#xff0c;我都希望你明白一些道理。这些道理在学校老师不会教你&#xff0c;但是非常重要。 一、中国的科举制度 科举制度是为王朝服务的。 科举制度是中国古代通过考试选拔官员的制度&#xff0c…

C++ initializer_list类型推导

目录 initializer_list C自动类型推断 auto typeid decltype initializer_list<T> C支持统一初始化{ }&#xff0c;出现了一个新的类型initializer_list<T>&#xff0c;一切类型都可以用列表初始化。提供了一种更加灵活、安全和明确的方式来初始化对象。 class…

Fragment+Viewpage2+FragmentStateAdapter实现滑动式标签布局

大家好&#xff0c;我是网创有方&#xff0c;今天记录下标签布局的实现方法&#xff0c;先看下效果图。 第一步&#xff1a;编写一个activity或者fragment。内含有一个viewpager2的适配器&#xff0c;适配器类型为FragmentStateAdapter。 ​ public class MediaCreateFragment…

pdf文件怎么删除其中一页?这些删除小技巧了解下

在我们日常的学习办公中&#xff0c;PDF文件因其跨平台、格式固定的特性&#xff0c;成为了我们工作和学习中不可或缺的一部分。然而&#xff0c;有时我们可能会遇到需要删除PDF文件中某一页的情况&#xff0c;这时该如何操作呢&#xff1f;下面教大家几种删除PDF页面小技巧&am…

钟义杰老师6月28号给中海油讲授《创新思维与创新管理+华为敏捷转型》圆满结束

钟老师的授课深受学员喜爱&#xff0c;课堂上老师讲了很多华为的案例&#xff0c;学员听的津津有味&#xff0c;对老师的授课一片好评

RedHat9 | podman容器-续集

一、管理容器存储和网络资源 使用容器来运行简单的进程&#xff0c;然后退出。可以配置容连续运行特定服务&#xff0c;如数据库服务。如果持续运行服务&#xff0c;需要向容器添加更多的资源&#xff0c;如持久存储或对其他网络的访问权限。 针对企业容器平台上的大型部署&a…

江协科技51单片机学习- p23 DS1302实时时钟

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

#笔记# 写给自己用的小爬虫

最近完成了一个文旅行业信息聚合的小应用&#xff0c;实现仅从一个入口了解全行业的信息动态&#xff0c;不用一个一个翻看各网站&#xff0c;节省了不少检索时间。 一、基本思路 明确数据来源。基于前述目标&#xff0c;确定数据源为文化和旅游部管理部门官网&#xff0c;比…

万界星空科技公司推出AI低代码MES,引领制造业智能化新潮流

随着科技的不断进步和制造业的快速发展&#xff0c;传统生产管理模式正面临前所未有的挑战。在这个背景下&#xff0c;万界星空科技公司凭借其前瞻性的技术洞察力和强大的研发实力&#xff0c;推出了AI低代码MES&#xff08;制造执行系统&#xff09;&#xff0c;该系统凭借其独…

【深度学习】调整加/减模型用于体育运动评估

摘要 一种基于因果关系的创新模型&#xff0c;名为调整加/减模型&#xff0c;用于精准量化个人在团队运动中的贡献。该模型基于明确的因果逻辑&#xff0c;将个体运动员的价值定义为&#xff1a;在假设情景下&#xff0c;用一名价值为零的球员替换该球员后&#xff0c;预期比赛…

2024免费的股票数据接口API

沧海数据 # Restful API https://tsanghi.com/api/fin/stock/{exchange_code}/realtime?token5dbb47113a4a43a6be1755673ce854db&ticker{ticker} 数据来源&#xff1a;沧海数据 请求方式&#xff1a;Get 数据格式&#xff1a;标准Json格式[{},...{}]