目录

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 - dp[n][V]即可。

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;
}
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
晓纪同学11 分钟前
C++ Primer (第五版)-第十三章 拷贝控制
java·开发语言·c++
独家回忆3641 小时前
每日算法-250415
算法
m0_742950551 小时前
算法堆排序记录
数据结构·算法
arriettyandray1 小时前
Qt/C++学习系列之QTreeWidget的简单使用记录
c++·qt·学习
明月看潮生1 小时前
青少年编程与数学 02-016 Python数据结构与算法 15课题、字符串匹配
python·算法·青少年编程·编程与数学
zhaoyqcsdn2 小时前
C++对象池设计:从高频`new/delete`到性能飞跃的工业级解决方案
c++·经验分享·笔记
CppPlayer-程序员阿杜2 小时前
poll为什么使用poll_list链表结构而不是数组 - 深入内核源码分析
网络·c++·链表·list·poll
@hdd2 小时前
C++| 深入剖析std::list底层实现:链表结构与内存管理机制
c++·链表·list
精彩漂亮ing3 小时前
CExercise_13_1排序算法_2归并排序
算法·排序算法
weixin_428498493 小时前
使用POCO库进行ZIP压缩和解压
c++