二维数组 C++ 蓝桥杯

1.稀疏矩阵

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

const int N = 1e4 + 10;
int a[N][N];

int main() {
	int n, m; cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> a[i][j];
		}
	}
	for (int j = m; j >= 1; j--) {
		for (int i = n; i >= 1; i--) {
			if (a[i][j] != 0) {
				cout << i << " " << j << " " << a[i][j] << endl;
			}
		}
	}
	return 0;
}

思路:根据样例特点,可知,先遍历列,再遍历行,并且都是倒着遍历的。判断每个元素是否非零,如果非零,输出所在行、列、这个值、换行。

如下图:

注意:数组大小,比如 int 类型数组,一维int数组 最大有1e10的数据量, 二维数组int 类型的就只能开1e4。一般喜欢在可以开的量上加10。所以喜欢定义常量const int N=1e4+10;

1e4:10^4 这里相当于以10为底,4为幂次。

const int N=1e4+10:const 修饰N,让它变为一个常量,这里用在数组定义时,开辟大小,因为这里数组的大小只能用常量,所以用const来定义一个常量N。这样的好处,如果修改多处N这个量时,可以不用一个一个找,直接修改N定义的值即可修改完成。

2.矩阵交换行

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int a[10][10];
int main() {
	for (int i = 1; i <= 5; i++) {
		for (int j = 1; j <= 5; j++) {
			cin >> a[i][j];
		}
	}
	int n, m; cin >> n >> m;
	for (int i = 1; i <= 5; i++) {
		swap(a[n][i], a[m][i]);
	}
	for (int i = 1; i <= 5; i++) {
		for (int j = 1; j <= 5; j++) {
			cout << a[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

思路:输入二位数组5行5列的元素,在输入要交换的行,遍历下标列从1到5,调用swap函数,交换a[n][i]和a[m][i]即可。swap函数头文件是algorithm。最后输出交换后的二维数组即可。

完结!!!⠀՞⸝⸝. .⸝⸝՞˳ഒ

相关推荐
楼田莉子24 分钟前
C++17新特性:__had_include/属性/求值顺序规则
开发语言·c++·后端
h_a_o777oah2 小时前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
雪度娃娃3 小时前
Asio异步读写——连接的安全回收问题
开发语言·c++·安全·php
不吃土豆的马铃薯4 小时前
Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
linux·服务器·开发语言·前端·c++
liulilittle4 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯
咩咦5 小时前
C++学习笔记26:static 静态成员
c++·学习笔记·static·静态成员变量·静态成员·静态成员函数
秋落风声5 小时前
内存池仿Nginx C++实现
c++·nginx
小白要努力sgy5 小时前
实时通信框架CyberRT
c++·自动驾驶·实时通讯
hansang_IR5 小时前
【记录】loj2967「COCI 2010.03.06」PROGRAM
c++·算法
霍霍的袁6 小时前
【C++初阶】缺省参数(默认参数)详细讲解
开发语言·c++·算法