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;
}
相关推荐
代码什么用几秒前
LeetCode-42. 接雨水
算法·leetcode
多弗朗皮卡丘3 分钟前
C++ stack和queue
开发语言·c++·deque·queue·stack·容器适配器
lengxuenong5 分钟前
枚举及其优化学习手册
c++·学习·算法·青少年编程
小O的算法实验室19 分钟前
IEEE TAI,RoCo:基于角色的LLM协作实现自动启发式设计
算法
SelectDB技术团队22 分钟前
Apache Doris 高性能 Open Lake Variant 读写技术解析(含对比数据)
数据结构·数据库·clickhouse·日志·apache doris·selectdb·湖仓架构升级
小范的技术工坊24 分钟前
大模型蒸馏
人工智能·算法·数据挖掘·大模型
Benny_Tang28 分钟前
P9527 [JOIST 2022] 洒水器 / Sprinkler 题解
c++·算法
kiracrimson1 小时前
希尔排序:让插入排序不再怕逆序
数据结构·算法·排序算法
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出星球探险中的“独特能量石“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
垆边人似月.1 小时前
华为机考题:最小代价爬楼梯
c语言·c++