基础练习 回形取数
时间:2022-06-17
本文章向大家介绍基础练习 回形取数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题描述
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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
样例输入
3 2 1 2 3 4 5 6
样例输出
1 3 5 6 4 2 思路: 题目与蛇形填数类似。建立二维数组a[x][y]并初始化为-1(虽然题目里说都是正整数,理论上可以初始化成0,实际上初始化为0就得不了满分,只能说测试数据xxx……),把数据输入a[x][y]中,输出顺序为先x增加y不变,没访问一个格就输出一个数并将其置为-1,直到x的下一个为-1,开始以同样方式增长y,然后x,然后y……直到所有数据都被读过。
#include <cstdio>
#include <vector>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
//freopen("input2(1).txt", "r", stdin);
int m, n;
int i, j, num = 0;
int a[205][205];
memset(a, -1, sizeof(a));
scanf("%d%d", &m, &n);
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
scanf("%d", &a[i][j]);
int tot = 0, x = -1, y = 0;
while(tot < m * n)
{
while(x + 1 < m && a[x + 1][y] != -1)
{
printf("%d ", a[++x][y]);
a[x][y] = -1;
++tot;
}
while(y + 1 < n && a[x][y + 1] != -1)
{
printf("%d ", a[x][++y]);
a[x][y] = -1;
++tot;
}
while(x - 1 >= 0 && a[x - 1][y] != -1)
{
printf("%d ", a[--x][y]);
a[x][y] = -1;
++tot;
}
while(y - 1 >= 0 && a[x][y - 1] != -1)
{
printf("%d ", a[x][--y]);
a[x][y] = -1;
++tot;
}
}
return 0;
}
- 除了奇奇怪怪的机器人们,2017年人工智能还干了哪些“蠢事”?
- 区块链搬砖的坑及有效鉴别方法
- 英伟达回应禁令:研究人员放心用不更新驱动就没影响
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(88)-Excel导入和导出-主从表结构导出
- WCF中的Binding模型之六(完结篇):从绑定元素认识系统预定义绑定
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(57)-插件---ueditor使用
- 何为正则表达式?要他有何用?
- 向silverlight传递自定义参数
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出
- sl从程序集中读取xaml文件
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[实现篇]
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇]
- 如何解决打开VS2010后没有UI界面的问题
- RadRails1.0降临——增加Profiler、CallGraph Analyzer和Rails Shell等新特性
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法