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;
}
相关推荐
geovindu38 分钟前
CSharp: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·算法·c#·.net·搜索算法
库克克1 小时前
【C++】set 与multiset
开发语言·c++
Mortalbreeze2 小时前
深入 Linux Socket 编程:端口号、网络字节序与 struct sockaddr 详解
linux·服务器·网络·c++
ekkoalex2 小时前
训练框架以及算法实现的框架
算法
DFT计算杂谈2 小时前
交错磁研究进展材料物性与交叉应用
数据库·人工智能·python·opencv·算法
玖玥拾2 小时前
LeetCode 26 删除有序数组中的重复项
算法·leetcode
Kina_C2 小时前
LVS负载均衡的十二种核心调度算法
linux·运维·算法·负载均衡·lvs
吞下星星的少年·-·3 小时前
牛客技能树:小红走矩阵(dp入门)
算法·dp
繁星蓝雨3 小时前
C++设计原理——异常处理
java·c++·异常处理·noexcept·throw·try catch
Kurisu_红莉栖3 小时前
关于相关问题的自我回答
c++