【100题】第四十六题 括号匹配

四对括号匹配排列方式探究
本文深入探讨了四对括号可以形成的匹配排列方式,通过两种解法详细解析了如何利用全排列和八位bit操作来解决此类问题。

一,题目

四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())

二,解答

解法一:左右括号成一对则抵消

可以将左括号看成1右括号看成 -1,然后对8个数进行全排列

对每个排列判断,是否符合条件,逐个相加,sum>=0直到遍历完该序列,符合条件则count++

如果出现sum<0则失败

解法二:采用八位bit,从0000 0000 1111 1111遍历,遇到0 -1遇到1 1

如果加完该序列所有位等于0,且递加过程中sum始终大于零则符合条件

三,源码


#include<iostream>
#include <vector>
using namespace std ;
void Print(vector<char> v)
{
	for (vector<char>::iterator beg=v.begin();beg!=v.end();++beg)
		cout<<*beg<<" ";
	cout<<endl;
}
void MatchNums(int nSize,int nLen,vector<char> &v)
{
	int nLeftBrackets=0;
	int nRightBrackets=0;
	for (vector<char>::iterator beg=v.begin();beg!=v.end();++beg)
	{
		if(*beg=='(')
			nLeftBrackets++;
		else
			nRightBrackets++;
		if(nRightBrackets>nLeftBrackets)
			return;
		if(nLeftBrackets+nRightBrackets==nSize&&nLeftBrackets==nRightBrackets)
			Print(v);
	}
	
	if (nLen>0)
	{
		v.push_back('(');
		MatchNums(nSize,nLen-1,v);
		v.pop_back();
		v.push_back(')');
		MatchNums(nSize,nLen-1,v);
		v.pop_back();
	}
}
int main()
{
	vector <char> v;
	int n=4;
	MatchNums(n,n,v);
	return 1;
}


【多种改进粒子群算法进行比较】基于启发式算法的深度神经网络卸载策略研究【边缘计算】(Matlab代码实现)内容概要:本文围绕“基于多种改进粒子群算法比较的深度神经网络卸载策略研究”展开,聚焦于边缘计算环境下的计算任务卸载优化问。通过引入多种改进的粒子群优化(PSO)算法,并与其他启发式算法进行对比,旨在提升深度神经网络模型在资源受限边缘设备上的推理效率与系统性能。文中详细阐述了算法设计、模型构建、优化目标(如延迟、能耗、计算负载均衡)以及在Matlab平台上的代码实现过程,提供了完整的仿真验证与结果分析,展示了不同算法在卸载决策中的表现差异。; 适合人群:具备一定编程基础和优化算法知识,从事边缘计算、人工智能部署、智能优化等相关领域的科研人员及研究生;熟悉Matlab仿真工具的开发者。; 使用场景及目标:①研究边缘计算环境中深度学习模型的任务卸载机制;②对比分析多种改进粒子群算法在复杂优化问中的性能优劣;③为实际系统中低延迟、高能效的AI推理部署提供算法选型与实现参考; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法实现细节与参数设置,通过复现仿真结果深入理解不同启发式算法在卸载策略中的适用性与局限性,同时可拓展至其他智能优化算法的对比研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值