week1-[循环嵌套]蛇

week1-[循环嵌套]蛇

题目描述

给定正整数 nnn 和 mmm,输出一个 nnn 行 mmm 列的蛇形矩阵。具体输出格式参见样例。

输入格式

输入共 111 行 222 个正整数 n,mn,mn,m。

输出格式

输出共 nnn 行,每行 mmm 个用空格隔开的正整数表示答案。

样例 #1

样例输入 #1

复制代码
4 4

样例输出 #1

复制代码
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13

提示

样例解释 111
复制代码
 1 ->  2 ->  3 ->  4
                   |
                   v
 8 <-  7 <-  6 <-  5
 |
 v
 9 -> 10 -> 11 -> 12
                   |
                   v
16 <- 15 <- 14 <- 13

数据范围

对于所有数据,1≤n,m≤1001\leq n,m\leq 1001≤n,m≤100。

题目解析:

要求输出一个 n×mn \times mn×m 的矩阵,按照"蛇形"顺序填充:

  • 第一行从左到右填充
  • 第二行从右到左填充
  • 第三行从左到右填充,依次交替
  • 数字从 1 开始递增

解题思路:

  1. 使用两层循环遍历矩阵行和列。
  2. 外层循环遍历行 i,内层循环遍历列 j
  3. 每行根据奇偶判断填充方向:
    • 偶数行(0、2、4...,从 0 开始)从左到右
    • 奇数行(1、3、5...)从右到左
  4. 维护一个递增的计数器 num,每输出一个数字加 1。
  5. 输出时,行内数字用空格隔开,每行结束换行。

C++实现:

c++ 复制代码
#include <iostream>
using namespace std;

int main() {
	int n, m;
	cin >> n >> m;
	int num = 1;

	for(int i = 0; i < n; i++) {
		if(i % 2 == 0) { // 偶数行从左到右
			for(int j = 0; j < m; j++) {
				cout << num;
				if(j != m - 1) cout << " ";
				num++;
			}
		} else { // 奇数行从右到左
			int start = num + m - 1;
			for(int j = 0; j < m; j++) {
				cout << start;
				if(j != m - 1) cout << " ";
				start--;
			}
			num += m;
		}
		cout << "\n";
	}
	return 0;
}
相关推荐
多米Domi01121 分钟前
0x3f 第49天 面向实习的八股背诵第六天 过了一遍JVM的知识点,看了相关视频讲解JVM内存,垃圾清理,买了plus,稍微看了点确定一下方向
jvm·数据结构·python·算法·leetcode
_F_y6 小时前
MySQL用C/C++连接
c语言·c++·mysql
兩尛6 小时前
c++知识点2
开发语言·c++
xiaoye-duck7 小时前
C++ string 底层原理深度解析 + 模拟实现(下)——面试 / 开发都适用
开发语言·c++·stl
Azure_withyou7 小时前
Visual Studio中try catch()还未执行,throw后便报错
c++·visual studio
琉染云月7 小时前
【C++入门练习软件推荐】Visual Studio下载与安装(以Visual Studio2026为例)
c++·visual studio
L_09079 小时前
【C++】高阶数据结构 -- 红黑树
数据结构·c++
A_nanda9 小时前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
代码雕刻家11 小时前
2.4.蓝桥杯-分巧克力
算法·蓝桥杯
Ulyanov11 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲