蓝桥杯—BASIC-25 回形取数
题目:
回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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
分析:依次按顺序遍历左列下行右列上行,设置一个二维数组记录已经访问过的数,访问过就不再访问
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAX_N = +;
int a[MAX_N][MAX_N];
int b[MAX_N * MAX_N + ];
int c[MAX_N][MAX_N];
int main() {
int m, n;
while(scanf("%d%d", &m, &n) == ) {
for(int i = ; i < m; i++) {
for(int j = ; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
memset(c, , sizeof(c));
int x = -, y = ;
int d = ;
while(d < n*m) {
while(x < m- && !c[x+][y]) { b[d++] = a[++x][y]; c[x][y] = ; }
while(y < n- && !c[x][y+]) { b[d++] = a[x][++y]; c[x][y] = ; }
while(x > && !c[x-][y]) { b[d++] = a[--x][y]; c[x][y] = ; }
while(y > && !c[x][y-]) { b[d++] = a[x][--y]; c[x][y] = ; }
}
for(int j = ; j < d-; j++) printf("%d ", b[j]);
printf("%d\n", b[d-]);
}
return ;
}
蓝桥杯—BASIC-25 回形取数的更多相关文章
- Java实现 蓝桥杯VIP 基础练习 回形取数
问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方向向下. 输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列.接下来m ...
- 蓝桥杯 基础练习 BASIC-25 回形取数
基础练习 回形取数 时间限制:1.0s 内存限制:512.0MB 问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方向向下. 输入格式 ...
- 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索
问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...
- 基础练习 回形取数 (循环 + Java 输入输出外挂)
基础练习 回形取数 时间限制:1.0s 内存限制:512.0MB 问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方 ...
- C语言 · 回形取数
基础练习 回形取数 时间限制:1.0s 内存限制:512.0MB 问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度.一开始位于矩阵左上角,方向向 ...
- Java 第十一届 蓝桥杯 省模拟赛 洁净数
洁净数 小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数.如果一个数的数位不包含数字 2,小明将它称为洁净数. 请问在整数 1 至 n 中,洁净数有多少个? 输入格式 输入的第一行包含一个整数 ...
- BASIC-25_蓝桥杯_回形取数
示例代码: #include <stdio.h>#define N 200 int main(void){ int num[N][N]; int i= 0, j = 0 , k = 0 , ...
- Java实现 蓝桥杯 算法训练 K好数
算法训练 K好数 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K ...
- Java实现 蓝桥杯 历届试题 地宫取宝
问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...
随机推荐
- java io 好文传送
转自:白大虾 地址:https://www.cnblogs.com/baixl/p/4170599.html 主要内容 java.io.File类的使用 IO原理及流的分类 文件流 FileInput ...
- Django与缓存
我们都知道Django建立的是动态网站,正常情况下,每次请求过来都经历了这样一个过程: 接收请求 -> url路由 -> 视图处理 -> 数据库读写 -> 视图处理 -> ...
- 事后调试.VC_资料01
1.windows中的调试_VC语言_编程开发B1_最全面的网站教程.html(http://study.qqcf.com/web/522/98401.htm) windows中的调试 1.事后调试有 ...
- [原][粒子特效][spark]事件action
深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html group调用action的地方: 可以看到使用action的可以是出生一次 ...
- bufferedReader中的数据, 只是读过一次, 就没有了(拿走,自然就没了),只能读一次( load, readLine 等只要是读操作)
- PCB板的三种敷铜方法解析
1 do not pour over all same net objects:仅仅对相同网络的焊盘进行连接,其他如覆铜.导线不连接. 2 pour over all same net objects ...
- Codeforces 838 B - Diverging Directions
B - Diverging Directions 思路: 用dfs序+线段树维护子树中距离(从1到u,再从u到1)的最小值 代码: #pragma GCC optimize(2) #pragma GC ...
- 第 8 章 容器网络 - 052 - overlay 如何实现跨主机通信?
overlay 如何实现跨主机通信? 在 host2 中运行容器 bbox2: docker run -itd --name bbox2 --network ov_net1 busybox bbox2 ...
- Java中类似C#中Task.wait()的类CountDownLatch
当主线程开辟多个子线程,而又需要这些子线程都执行完成后再执行主线程后续的操作,在C#中可以通过Task的wait方法来实现,然而在Java中也有类型的类CountDownLatch,具体用法如下: p ...
- 在python中使用正则表达式(三)
这里主要说一下贪婪匹配和非贪婪匹配 贪婪匹配:匹配尽可能多的字符: 非贪婪匹配:匹配尽可能少的字符 python的正则匹配默认是贪婪匹配 例子: >>> re.match(r'^ ...