栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++算法记录册

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++算法记录册

1.递归剪枝法

输入一串数组,找到数组中子序列的的最大顺序

fun_back(int a[], int i, int n) {
	int max_len = 1;
	for (int j = i + 1; j < n; j++)
		if (a[j] > a[i])
			if (max_len < fun_back(a, j, n) + 1)
				max_len = fun_back(a, j, n) + 1;
	return max_len;
	if (i == n - 1)
		return max_len;

}

int main() {
	int n, max = 0; //输入个数
	cin >> n;
	int a[n];
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	for (int i = 0; i < n; i++) {
		//max > fun_back(a, i, n) ? max : fun_back(a, i, n);
		if (max < fun_back(a, i, n))
			max = fun_back(a, i, n);
	}
	cout << max;
}

例如输入了5个数

1.主函数对每个变量都都进行遍历一遍,是根节点的所有子节点是标识一处。

2,递归函数只需要判断当前节点是否大于父节点,如果满足,就调用下一个递归,如果不满足就返回值。

最后,递归要判断是否到了底层,就是到第四层的时候。要么就往下走,要么就退出。不然最后一层已经在无法向下递归了。

2,二维数组遍历法

对角线遍历

int main() {
	int n, m; //输入个数
	cin >> n;
	cin >> m;
	int temp = 0;
	int a[n][m];
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++)
			cin >> a[i][j];
	}
	//输入n行m列的二位数组

	for (int p = 0; p < n + m - 1; p++) {
		for (int i = 0; i <= p; i++)
			if (i < n && (p - i) < m) {
				cout << a[i][p - i] << " ";
			}
		cout << endl;
	}



}

我以其中的的交点作为二维坐标的焦点。

1:我们可以发现所有线上的坐标,在同一条坐标之上的值总是相等的。

2:我们要遍历这个值,是M+N-1。对角线分别对应着一个值

3:注意绿线坐标的部分,如果是4*4的二维坐标,则这个坐标最开始是a[4][0],这个坐标是并不存在的。所以需要判断所遍历的值是否在二维坐标的范围之内。

类似地,还可以把代码改为蛇形遍历

int main() {
	int n, m; //输入个数
	cin >> n;
	cin >> m;
	int temp = 0;
	int a[n][m];
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++)
			cin >> a[i][j];
	}
	//输入n行m列的二位数组

	for (int p = 0; p < n + m - 1; p++) {
		if (p % 2 == 0) {
			for (int i = 0; i <= p; i++)
				if (i < n && (p - i) < m) {
					cout << a[i][p - i] << " ";
				}
			cout << "#" << p << endl;
		} else {
			for (int i = p; i >= 0; i--)
				if (i < n && (p - i) < m) {
					cout << a[i][p - i] << " ";
				}
			cout << "#" << p << endl;
		}

		cout << endl;
	}



}

如下图:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890241.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号