C++笔试强训day22

目录

1.添加字符

2.数组变换

3.装箱问题

常规一维优化:


1.添加字符

链接

因为lenA <= lenB <= 50,因此可以无脑暴力解题:

遍历所有符合条件的匹配方法,找出最小的不同的数量,即最大的相同的数量

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
	string A;
	string B;
	cin >> A >> B;
	int c1 = A.size();
	int c2 = B.size();
	int cnt = 0;
	if (c1 == c2)
	{
		for (int i = 0; i < c1; i++)
		{
			if (A[i] != B[i])
				cnt++;
		}
		cout << cnt << endl;
	}
	else
	{
		int dif = c2 - c1;
		int max_n = 0;
		for (int i = 0; i <= dif; ++i)
		{	
			cnt = 0;
			int j = 0;
			int k = i;
			while (j < c1)
			{
				if (A[j] == B[k])
					cnt++;
				j++;
				k++;
			}
			max_n = max(max_n, cnt);
		}
		cout << c1 - max_n << endl;
	}
	return 0;
}

2.数组变换

链接

判断是否为2的n次方就好了。

cpp 复制代码
#include <iostream>
using namespace std;
int arr[60];
int main() {
	int n;
	cin >> n;
	int maxn = 0;
	int x;
	for (int i = 1; i <= n; ++i)
	{
		cin >> x;
		arr[i] = x;
		maxn = max(maxn, x);
	}
	for (int i = 1; i <= n; ++i)
	{
		if (!((maxn / arr[i]) % 2 == 0 || arr[i] == maxn))
		{
			cout << "NO" << endl;
			return 0;
		}
	}
	cout << "YES" << endl;
	return 0;
}

3.装箱问题

链接

01背包dp问题:

讲题意逆向转化为使装入的体积最大更好求解,最后返回时返回V - dpnV即可。

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

int V, n;
int v[20010];
int dp[40][20010];
int main()
{
	cin >> V >> n;
	for (int i = 1; i <= n; ++i)
		cin >> v[i];
	
	// 填表
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= V; ++j)
		{
			dp[i][j] = dp[i - 1][j];
			if (j >= v[i])
				dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i]] + v[i]);
		}
	}
	cout << V - dp[n][V] << endl;
	return 0;
}
常规一维优化:
cpp 复制代码
#include <iostream>
using namespace std;

int V, n;
int v[20010];
int dp[20010];
int main()
{
	cin >> V >> n;
	for (int i = 1; i <= n; ++i)
		cin >> v[i];
	
	// 填表
	for (int i = 1; i <= n; ++i)
		for (int j = V; j >= v[i]; --j)
				dp[j] = max(dp[j], dp[j - v[i]] + v[i]);

	cout << V - dp[V] << endl;
	return 0;
}
相关推荐
土豆.exe12 小时前
Fastjson2 2.0.53 哈希碰撞 RCE:从原理到三种打法
算法·哈希算法
黄河123长江13 小时前
有限Abel群的结构()
算法
峥无13 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记
阿米亚波13 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
Jerry13 小时前
LeetCode 92. 反转链表 II
算法
小王C语言13 小时前
【3. 基于 Vibe Coding 的 OJ 平台】. 构建仓库、环境准备、需求梳理、安装依赖
网络·c++
骊城英雄14 小时前
Rust从入门到精通-trait
人工智能·算法·rust
可编程芯片开发14 小时前
基于PI控制算法的pwm直流电机控制系统Simulink建模与仿真
算法
小王C语言14 小时前
【8.进行接口测试】:通过 curl 进行接口自动化测试 / 通过 python 程序进行接口自动化测试
网络·c++
怕浪猫14 小时前
2840亿参数只卖白菜价:DeepSeek V4 Flash 正式版上线,Agent 能力暴涨6倍
人工智能·算法