蓝桥杯基础练习VIP-回形取数(C语言)

回形取数(第十一届 国赛 T6) 用户分行输入两个正整数(2< =正整数< =20),第一个数代表数字矩阵的行数,第二个数代表数字矩阵的列数,数字矩阵的数字为从1开始的正整数,根据回形取数规则将最终的数字线路输出(数字线路中的每个数字之间需要有一个英文逗号隔开)。回形取数是沿着一个数字矩阵的左上角向下开始移动取数当前方没有数字或者数字已经被取过就会左转继续移动取数当没有数可取时回形取数结束,如下图所示。数字线路为:1,4,7,10,11,12,9,6,3,2,5,8。数字线路为:1,4,5,6,3,2。注:数字矩阵不需要输入此处只为展示。 阅读详情

题目描述

回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。

输入格式

输入第一行是两个不超过200的正整数m,  n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。

输出格式

输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。

样例输入

3 3
1 2 3
4 5 6
7 8 9

样例输出

1 4 7 8 9 6 3 2 5

思路

结尾不能有空格,将第一个元素单独输出,之后输出元素在前面添加空格就行

左转90度可以先设好前进路径的数组,用这个加上当前位置实现转向

在边缘时根据路径朝向判断下一步是否超出范围,如果下一步超出矩阵范围就转向

判断数据是否用过可以再设一个数组,用来记录下一步的数据是否被用过,如果用过就转向,如果转向后的数据还是被取用了就退出

#include<stdio.h>
int sum[210][210] = { 0 };//记录数据已被取用
int x[4] = { 1,0,-1,0 };//前进路径
int y[4] = { 0,1,0,-1 };

void compute(int m, int n, int a[][210]) {
	printf("%d", a[0][0]);//第一个数先行输出
	sum[0][0] = 1;
	int k = 0;//前进路径
	int i = 0;//当前位置
	int j = 0;
	while (1) {
		if ((k == 0 && i + x[k] >= m)|| (k == 1 && j + y[k] >= n)|| (k == 2 && i + x[k] < 0)) {//矩阵边缘时下一个超出界限
			k = (k + 1) % 4;//左转90度
			if (i + x[k] < 0 || i + x[k] >= m || j + y[k] < 0 || j + y[k] >= n)//仍然没有数据存在
				break;
			
		}
		
	//	else if (k == 3 && j + y[k] < 0);//边缘转三次就进入内部
		if (sum[i + x[k]][j + y[k]]==1) {//数据已经取过
			k = (k + 1) % 4;//左转90度
			if (sum[i + x[k]][j + y[k]] == 1)//数据已经取过
				break;
			
		}
		i = i + x[k];
		j = j + y[k];
		printf(" %d", a[i][j]);//输出数据
		sum[i][j] = 1;//标记已取

	}
}
int main() {
	int m, n;
	scanf("%d %d", &m, &n);
	int a[210][210];
	int i,j;
	for (i = 0;i < m;i++) {
		for (j = 0;j < n;j++) {
			scanf("%d", &a[i][j]);
		}
	}
	compute(m, n, a);
	return 0;
}

蓝桥杯 BASIC-25 回形取数(c++) 问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 ... 阅读详情

相关推荐

C++ 蓝桥杯刷题记录汇总(持续更新)

今天开始人生的第一篇博客了,主要是希望自己坚持一下吧,今年有个特殊的寒假,希望抓住假期的小尾巴,备战蓝桥杯,坑的是,一个没学过C++的小白(主要还是菜????)报了蓝桥杯C++ 大学A组,希望在学习算法和语言的同时,记录这一切,希望以后得到支持和鼓励话不多说,加油! 原文链接 及 ID 关键字 我的题解 难度 BEGIN-4 入门 数列 取模 Fibonacci数列 入门训练 ...

Lurker_hunter的博客 2971

【蓝桥杯】BASIC-25 回形取数

题目描述: 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入描述: 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出描述: 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 输入样例: 3 3 1 2 3 ...

麦芽雪冷萃 1016

蓝桥杯C/C++VIP试题每日一练之回形取数

蓝桥杯每日一练第二十二天报时助手。

静Yu的博客 6942

Java——蓝桥杯基础练习回形取数

问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 ...

呼呼的博客 887

蓝桥杯国赛题之C++回形取数.zip

蓝桥杯国赛 蓝桥杯国赛题之C++回形取数

Temporal Anti-Aliasing(时域抗锯齿TAA)

首先说一下走样:一般分为时域走样(如旋转车轮)和空域走样(锯齿),但在 TAA 技术是采用时域相关叠加混合技术来解决空域走样的问题。 简单看一下空域抗锯齿 (Spatial Anti-Aliasing, SAA)相关技术,最普及的莫过于 MSAA,被各大渲染引擎采用,但是 MSAA 并不适用于延迟渲染 (Deferred Rendering),随之出现了很多基于形态学的后处理抗锯齿技术,如 MLAA,FXAA,SMAA 等(具体看参见图形_反走样技术总结相关介绍),虽然他们表现良好且支持延迟渲染,但是都会面

qq_35312463的博客 1万+

c语言怎么提取坐标的数字,[蓝桥杯][基础练习VIP]回形取数 (C语言代码)

解题思路:从上下左右开始编代码注意事项:两个判断循环条件不等于-1以及横纵坐标的范围限制需要特别注意参考代码:#include#include#include#includeusing namespace std;int main(){int a[202][202],b,m,n,i,j,k;cin>>m>>n;for(i=0; ifor(j=0; j{cin>>...

weixin_39656513的博客 266

【胡学长 带你学 Global Mapper 】如何将影像地图转换为国家2000坐标系

多部门联合开展工作坐标数据不匹配怎么办?Hi,我是胡学长!今天教大家如何利用Global Mapper将谷歌影像数据转换为国家2000坐标系影像数据 。

一起来交流学习吧 1万+

[蓝桥杯][基础练习VIP]回形取数

题目 题目链接 题解 模拟。 比较简单的一道提高题了,控制好上下左右边界,控制好方向,输出就行了,不用管最后一个空格加不加,这个无所谓。 看代码会好理解点。 代码 #include<bits/stdc++.h> using namespace std; int n, m, dir = 2; int a[210][210]; int main() { cin>>n>>m; for(int i = 1;i <= n;i ++) for(int j = 1;

LJR的博客 145

Copula函数实战:如何用MATLAB计算气象干旱与农业干旱的联合概率?

本文提供了一份基于MATLAB的Copula函数实战指南,详细阐述了如何利用该多变量联合分布函数计算气象干旱与农业干旱的联合概率及条件概率。通过从数据预处理、边缘分布拟合到Copula模型选择与检验的完整流程,帮助环境科学与农业气象研究者量化干旱事件的关联风险,为风险评估提供定量依据。

weixin_29213655的博客 429

【MODBUS】Java实现的Modbus协议类库——推荐j2mod库

Jamod是另一个开源的Modbus Java库。这个库的设计是完全面向对象的,基于抽象,应该支持易于理解、可重用性和可扩展性。它支持Modbus RTU和Modbus TCP,并且提供了主站和从站的功能。这是jamod Modbus库的一个分支,取自1.2.1版本,根据Apache 2许可证发布,包含在该项目的SVN存储库中。j2mod项目的目标是基于Java编程语言生成一个功能更全面的Modbus(tm)通信库。这是一个积极开发的项目,接受具有Modbus主站和从站开发经验的专业软件工程师提交的文件。

开源物联网项目商业化作者 5638

蓝桥杯C语言基础练习 回形取数(模拟法)

题目描述回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入输入第一行是两个不超过200的正整数m,  n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。样例输入3  3 1  2  3 4  5  6 7  8  9 样例输出...

zhangge138的博客 1643

2025 提高电力交易价格预测的疾风大模型方法综述

电力现货市场价格预测正转向大模型驱动的新范式。传统方法在极端波动、政策突变等场景下表现不佳,而Transformer、预训练时序模型(如Chronos-Bolt)和LLM混合框架展现出显著优势。关键技术包括多模态数据融合、两段式预训练微调、MoE架构和LLM-RAG增强解释性。案例显示,澳大利亚NSW市场误差降低43%,但混合模型路由仍必要。未来趋势涵盖数字孪生电网和多智能体竞价,需平衡模型创新与行业合规要求。大模型通过跨域学习与业务耦合提升预测,但需持续优化数据隐私、算力消耗和极端事件应对能力。

专注AI大模型,软件混淆,授权 1052

蓝桥杯C++——试题 基础练习 回形取数(VIP试题)

问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 ...

行秋的博客 1356

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程

1.新建shp文件地理坐标系保持和影像一致,面类型2.打开属性表3.添加字段这里分类6类,点击添加值添加添加完毕开始人工选地物类型,制作数据集开始标注,标注的时候可以借助谷歌地图来看标记足够多的样本打开面转栅格工具设置nodata值为15。

热爱分享,热爱记录 2524

微信小程序一键跳转公众号(使用 official-account 组件)

在当今移动互联网时代,用户体验已成为应用成功的关键因素之一。微信小程序作为一种便捷的应用形式,广泛应用于各个行业,为用户提供了丰富的服务和信息。然而,如何进一步提升用户体验,使其在小程序中能够更方便地获取相关信息,成为开发者需要关注的重要课题。实现一键跳转到公众号的功能,正是一个有效的解决方案。通过这一功能,用户可以轻松访问公众号,获取更多内容和服务,从而增强与品牌的互动和粘性。本文将详细介绍如何在微信小程序中实现这一功能,并提供相关的操作步骤和注意事项。

不迁怒,不贰过。小知识,大智慧。 3127

蓝桥杯练习系统-基础练习34道题解答答案全汇总(c/c++)

蓝桥杯练习系统BASIC-13 数列排序(c++,利用sort) 蓝桥杯练习系统BASIC-12 十六进制转八进制(c++,利用string) 蓝桥杯练习系统BASIC-11 十六进制转十进制(c++,利用流) 蓝桥杯练习系统BASIC-10 十进制转十六进制(c++,利用流) 蓝桥杯练习系统BASIC-9 特殊回文数(c++利用流和字符串) 蓝桥杯练习系统BASIC-8 回文数(c++,超简洁,利用流和字符串) 蓝桥杯练习系统BASIC-7 特殊的数字(c++,利用流和string) 蓝桥练习系统BASI

weixin_53037232的博客 5783

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

蓝桥杯Python这一篇就够了-训练系统题库合集(包括VIP试题)&数据结构与算法

第一版写于2020-11-13,第十一届蓝桥杯国赛前夕,老师和同学建议说写博文可以让学习更高效,陆陆续续写一些题解和学习笔记,在我的代码中我加了很多有助于理解程序的注释,希望这篇博客可以帮助你在蓝桥杯比赛或python学习取得进展。 一起进步,冲! 目录一、蓝桥杯题库1.1入门训练1.2基础练习 一、蓝桥杯题库 1.1入门训练 Fibonacci数列 圆的面积 序列求和 A+B问题 1.2基础练习 数列排序 十六进制转八进制 十六进制转十进制 ...

Harry______的博客 12万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

蓝桥杯试题集试题总汇(C++)

蓝桥杯试题总汇(C++) 基础练习 BASIC-30 VIP试题 阶乘计算 高精度 ...

行秋的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝桥杯练习系统 基础练习 回形取数(C++)

问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 ...

qq_41612801的博客 546

蓝桥杯基础练习所有VIP习题解析代码

试题 基础练习 阶乘计算 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述   输入一个正整数n,输出n!的值。   其中n!=123*…*n。 算法描述   n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。   将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注...

覃会程的博客 6237

蓝桥杯Java——基础练习VIP

1.阶乘计算 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述   输入一个正整数n,输出n!的值。   其中n!=123*…*n。 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。   将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。   首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。 输入格式   输..

WHT869706733的博客 548

蓝桥杯练习系统BASIC-25 VIP试题 回形取数(c++,简洁) 二维数组 循环

试题 基础练习 回形取数 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。 输出格式   输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 4 5 6 7 8 9

weixin_53037232的博客 439

蓝桥杯 基础练习VIP试题 21-30 C/C++

21.题目链接:Sine之舞 代码: #include<bits/stdc++.h> using namespace std; void an(int n) { int i; for(i=1;i<=n;i++) { cout<<"sin("<<i; if(i!=n&&i%2) { cout<<"-"; } } for(i=1;i<=n;i++) { cout<<")"; } } v

weixin_44160474的博客 306

蓝桥杯基础练习超全习题题解VIP版——BASIC-25.回形取数(护眼版)外加螺旋填数Python版

每日刷题(四十一) BASIC-25、回形取数 其实这个题和螺旋填数很类似,只是方向不同罢了 这里我先分析一下螺旋填数 这是我的思路,根据题意,先遍历第0列,我的方式是每次都遍历到“底”,何谓“底”,就是矩阵的边界,这样就能保证都不漏,也可以保证每一环节的依赖性,如果前面没有遍历,那么之后的步骤都不能走,可以达到输出正确的目的。所以我设置了标识符flag,用完一次flag就使它失效(赋值为0...

Atticus的博客 352
上一篇: 蓝桥杯基础练习VIP-矩阵乘法(C语言)
下一篇: 蓝桥杯基础练习VIP-阶乘计算(C语言)
Ehell
博客等级 码龄4年 23粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值