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;
}
相关推荐
wefg17 分钟前
【算法】动态规划
算法·动态规划
名字不好奇7 分钟前
在C++中 如何实现java中的Stream
java·c++
喵星人工作室11 分钟前
C++传说:神明之剑0.2.1
开发语言·c++·游戏
机器学习之心17 分钟前
198种组合算法+优化TCN-Transformer+SHAP分析+新数据预测+多输出!深度学习可解释分析,强烈安利,粉丝必备!
深度学习·算法·transformer·shap分析·新数据预测
狐5718 分钟前
2026-01-12-LeetCode刷题笔记-1266-访问所有点的最小时间.md
笔记·算法·leetcode
Gorgous—l18 分钟前
数据结构算法学习:LeetCode热题100-栈篇(有效的括号、最小栈、字符串解码、每日温度、柱状图中最大的矩形)
数据结构·学习·算法
小郭团队19 分钟前
教育公平的探索
大数据·人工智能·嵌入式硬件·算法·硬件架构
瑞雨溪24 分钟前
力扣题解:740.删除并获得点数
算法·leetcode·职场和发展
Watermelo61725 分钟前
探究TOON的价值边界:比JSON更优的大模型友好数据格式?
数据结构·人工智能·语言模型·自然语言处理·数据挖掘·数据分析·json
LeeeX!26 分钟前
基于YOLO11实现明厨亮灶系统实时检测【多场景数据+模型训练、推理、导出】
深度学习·算法·目标检测·数据集·明厨亮灶