【强训笔记】day4

NO.1

思路:利用滚动数组,迭代一个Fibonacci数列,给出三个值进行循环迭代,当n<c时,说明n在b和c之间,这里只需要返回c-n和n-b的最小值就可以了。

代码实现:

cpp 复制代码
#include<iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;
	int a = 0, b = 1, c = 1;
	while (n > c)
	{
		a = b;
		b = c;
		c = a + b;
	}

	cout << min(c - n, n - b) << endl;
	return 0;
}

NO.2

代码实现:

cpp 复制代码
class Solution
{
	int m, n;
	bool vis[101][101] = { 0 };
	int dx[4] = { 0, 0, 1, -1 };
	int dy[4] = { 1, -1, 0, 0 };
public:
	bool exist(vector<string>& board, string word)
	{
		m = board.size(), n = board[0].size();
		for (int i = 0; i < m; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (board[i][j] == word[0])
				{
					if (dfs(board, i, j, word, 0)) return true;
				}
			}
		}
		return false;
	}
	bool dfs(vector<string>& board, int i, int j, string& word, int pos)
	{
		if (pos == word.size() - 1)
		{
			return true;
		}
		vis[i][j] = true;
		for (int k = 0; k < 4; k++)
		{
			int a = i + dx[k], b = j + dy[k];
			if (a >= 0 && a < m && b >= 0 && b < n && !vis[a][b] && board[a][b]
				== word[pos + 1])
			{
				if (dfs(board, a, b, word, pos + 1)) return true;
			}
		}
		vis[i][j] = false;
		return false;
	}
};

NO.3

思路:dp线性数组,dp[1][1]=1,在根据状态方程dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1]进行求解。

cpp 复制代码
#include<iostream>

using namespace std;
int dp[31][31];
int n;
int main()
{
	cin >> n;
	dp[1][1] = 1;
	for (int i = 2; i < n; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1];
		}
	}

	for (int i = 1; i < n; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("%5d", dp[i][j]);
		}
		printf("\n");
	}
	return 0;
}
相关推荐
黎宇幻生5 小时前
Java全栈学习笔记33
java·笔记·学习
汉克老师6 小时前
第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(5、机甲战士)
c++·算法·蓝桥杯·01背包·蓝桥杯c++·c++蓝桥杯
朗迹 - 张伟6 小时前
Golang安装笔记
开发语言·笔记·golang
Mr_Xuhhh7 小时前
项目需求分析(2)
c++·算法·leetcode·log4j
c++bug7 小时前
六级第一关——下楼梯
算法
Morri37 小时前
[Java恶补day53] 45. 跳跃游戏Ⅱ
java·算法·leetcode
林木辛8 小时前
LeetCode热题 15.三数之和(双指针)
算法·leetcode·双指针
AndrewHZ8 小时前
【3D算法技术】blender中,在曲面上如何进行贴图?
算法·3d·blender·贴图·三维建模·三维重建·pcg
Jared_devin8 小时前
二叉树算法题—— [蓝桥杯 2019 省 AB] 完全二叉树的权值
数据结构·c++·算法·职场和发展·蓝桥杯
siy23339 小时前
[c语言日记] 数组的一种死法和两种用法
c语言·开发语言·笔记·学习·链表