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;
}
相关推荐
不会就选b15 分钟前
算法日常・每日刷题--<二分查找>1
算法
Chen_harmony18 分钟前
二、顺序表
数据结构
「維他檸檬茶」20 分钟前
大模型算法学习2026.6.13
学习·算法
叫我:松哥24 分钟前
基于Python的共享单车租赁数据分析与预测系统,技术栈flask+boostrap+随机森林+XGBoost
人工智能·python·深度学习·算法·随机森林·数据分析·flask
磊 子26 分钟前
C++设计模式
javascript·c++·设计模式
BAGAE36 分钟前
星链卫星数据获取:从太空安全到实时通信的技术革命
网络·数据结构·数据库·算法·云计算·hbase
happymaker062640 分钟前
LeetCodeHor100——438.找到字符串中所有的字母异位词
算法
西安邮电大学1 小时前
有关栈的经典算法题
java·后端·其他·算法·面试
h_a_o777oah1 小时前
【算法专项】扩展域并查集:原理详解及解决大部分种类并查集问题(洛谷P5937 P2024 C++代码)
数据结构·c++·算法·acm·并查集·扩展域·逻辑建模
兰令水1 小时前
leecodecode【单调栈】【2026.6.12打卡-java版本】
java·开发语言·算法