我是靠谱客的博主 无辜玉米,最近开发中收集的这篇文章主要介绍AcWing - 756. 蛇形矩阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

输入两个整数 n 和 m,输出一个 n 行 m 列的矩阵,将数字 11 到 n×m 按照回字蛇形填充至矩阵中。

具体矩阵形式可参考样例。

输入格式

输入共一行,包含两个整数 n 和 m。

输出格式

输出满足要求的矩阵。

矩阵占 n 行,每行包含 m 个空格隔开的整数。

数据范围

1≤n,m≤100

输入样例:

3 3

输出样例:

1 2 3
8 9 4
7 6 5

 

#include<iostream>
using namespace std;
// 初始化变量 dRow,dCol 记录每次拐弯的方向
// row, col 记录行列, turn 记录方向 result 记录结果
const int N = 110;
const int dRow[] = { 0,1,0,-1 };
const int dCol[] = { 1,0,-1,0 };
int row, col, turn, result[N][N];
void turn_to(int, int); // 判断是否需要拐弯
int main() {
int n, m;
cin >> n >> m;
int count = 1;
while (count <= n * m) {
result[row][col] = count++;
turn_to(n, m);
row += dRow[turn];
col += dCol[turn];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)cout << result[i][j] << " ";
cout << endl;
}
return 0;
}
void turn_to(int n, int m) {
int nextRow = row + dRow[turn];
int nextCol = col + dCol[turn];
if (nextRow == n || nextRow == -1)turn++;// 行出界
if (nextCol == m || nextCol == -1)turn++;// 列出界
if (result[nextRow][nextCol])turn++;// 已经走过了
turn %= 4; // turn 到 4 后归 0
}

 

最后

以上就是无辜玉米为你收集整理的AcWing - 756. 蛇形矩阵的全部内容,希望文章能够帮你解决AcWing - 756. 蛇形矩阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部