LeetCode #1096. Brace Expansion II

【PAT乙级】1096 大美数 (15 分) DFS回溯解法 题目 1096 大美数 (15 分) 若正整数 N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。 输入格式: 输入在第一行中给出正整数 K(≤10),随后一行给出 K 个待检测的、不超过 1e4 的正整数。 输出格式: 对每个需要检测的数字,如果它是大美数就在一行中输出 Yes,否则输出 No。 分析 先求出N所有因数 在所有因数里,4个一组枚举所有情况 可以四重for循环,也可以dfs 注意事项 a整除b是b÷a 代码(C++) #i 阅读详情

题目描述:

Under a grammar given below, strings can represent a set of lowercase words.  Let's use R(expr) to denote the set of words the expression represents.

Grammar can best be understood through simple examples:

  • Single letters represent a singleton set containing that word.
    • R("a") = {"a"}
    • R("w") = {"w"}
  • When we take a comma delimited list of 2 or more expressions, we take the union of possibilities.
    • R("{a,b,c}") = {"a","b","c"}
    • R("{{a,b},{b,c}}") = {"a","b","c"} (notice the final set only contains each word at most once)
  • When we concatenate two expressions, we take the set of possible concatenations between two words where the first word comes from the first expression and the second word comes from the second expression.
    • R("{a,b}{c,d}") = {"ac","ad","bc","bd"}
    • R("a{b,c}{d,e}f{g,h}") = {"abdfg", "abdfh", "abefg", "abefh", "acdfg", "acdfh", "acefg", "acefh"}

Formally, the 3 rules for our grammar:

  • For every lowercase letter x, we have R(x) = {x}
  • For expressions e_1, e_2, ... , e_k with k >= 2, we have R({e_1,e_2,...}) = R(e_1) ∪ R(e_2) ∪ ...
  • For expressions e_1 and e_2, we have R(e_1 + e_2) = {a + b for (a, b) in R(e_1) × R(e_2)}, where + denotes concatenation, and × denotes the cartesian product.

Given an expression representing a set of words under the given grammar, return the sorted list of words that the expression represents.

Example 1:

Input: "{a,b}{c,{d,e}}"
Output: ["ac","ad","ae","bc","bd","be"]

Example 2:

Input: "{{a,z},a{b,c},{ab,z}}"
Output: ["a","ab","ac","z"]
Explanation: Each distinct word is written only once in the final answer.

Constraints:

  1. 1 <= expression.length <= 60
  2. expression[i] consists of '{', '}', ','or lowercase English letters.
  3. The given expression represents a set of words based on the grammar given in the description.
class Solution {
public:
    vector<string> braceExpansionII(string str) {
        int i=0;
        unordered_set<string> result=parseRule1(str,i);
        vector<string> ret(result.begin(),result.end());
        sort(ret.begin(),ret.end());
        return ret;
    }

private:    
    unordered_set<string> merge(unordered_set<string>&a, unordered_set<string>&b){
        if(a.size()==0) return b;
        if(b.size()==0) return a;
        unordered_set<string> result;
        for(auto& s1: a)
            for(auto& s2: b) result.insert(s1+s2);
        return result;
    }
    //{a,b},{c,d},有逗号分隔多个选项,当没有逗号分隔时就是单一选项
    unordered_set<string> parseRule1(const string& str, int& i){
        unordered_set<string> result;
        result=parseRule2(str,i);
        while(i<str.length())
        {
            if(str[i]!=',') break;
            i++;
            unordered_set<string> tmp=parseRule2(str,i);
            result.insert(tmp.begin(),tmp.end());
        }
        return result;
    }
    //a{c,d}b{e,f},没有逗号分隔,括号左右可能有字母,整个字符串就是一个选项
    unordered_set<string> parseRule2(const string& str, int& i){
        unordered_set<string> result;
        while(i<str.length())
        {
            if(str[i]=='}'||str[i]==',') break;
            if(str[i]=='{')
            {
                unordered_set<string> tmp=parseRule3(str, i);
                result=merge(result,tmp);
            }
            else
            {
                unordered_set<string> tmp;
                string tmpStr;
                while(i<str.length()&&str[i]<='z'&&str[i]>='a')
                    tmpStr.push_back(str[i++]);
                tmp.insert(tmpStr);
                result=merge(result,tmp);
            }
        }
        return result;
    }
    //{a,b,c}, 括号把所有选项包含,左右没有其他字母,整个字符串就是一个选项
    unordered_set<string> parseRule3(const string& str, int& i){
        unordered_set<string> result;
        i++; // 跳过左括号
        result=parseRule1(str,i);
        i++; // 跳过右括号
        return result;
    }
};

 

【rk3566/3568】Android 11移植gms 【rk3566/3568】Android 11移植gms 1、前言 测试功能时,想去Google play store去下个应用测试,发现通过网页搜索总是下载不到正确的谷歌服务框架;于是就不得不去搞一个内置的gms。 2、移植 1、需要下载Android 11对应的gms的包 opengapps 2、看下文件目录 直接移植core里面的文件,GAPPs Optional按需添加 3、在vendor下创建google目录 ... 阅读详情

相关推荐

Linux系统下SAPGUI安装包选择与避坑指南

本文详细介绍了在Linux系统下选择和安装SAPGUI安装包的策略与避坑指南。重点解析了不同版本安装包的关键区别,特别是Linux版必须包含linux-lib.jar和linux64-lib.jar文件,避免误用Mac或Windows版导致的兼容性问题。文章还提供了针对Ubuntu、RHEL等不同Linux发行版的安装实战指南,以及常见报错的解决方案,帮助用户顺利完成SAPGUI的安装与配置。

weixin_28366353的博客 675

2020-5 leetcode 1096. 花括号展开 II

1.关键点:1.分析出什么是最小单位。 2.在最小单位中前面一个元素 乘以 { }中的 内 容怎么处理,{ }中的内容乘以后面一个元素怎么处理。以及两个操作的顺序。 3.重复的应用上述操作,对最单位进行处理得结果。 (对于递归解决问题,一定要弄清楚处理得最小单位是什么) class Solution { public: void MUL(set<string>& s,s...

qq_44143557的博客 1035

《Swin-Unet: 类Unet的纯Transformer架构用于医学图像分割》学习笔记

近年来,卷积神经网络(CNN)在医学图像分析领域取得了重要进展。尤其是基于U形架构和跳跃连接的深度神经网络广泛应用于各种医学图像任务。然而,尽管CNN表现优异,但由于卷积操作的局部性,其难以很好地学习全局和长距离语义信息的交互。在本文中,我们提出了Swin-Unet,一种用于医学图像分割的类Unet纯Transformer模型。被切分为Token的图像块输入到基于Transformer的U形编码器-解码器架构中,通过跳跃连接实现局部和全局语义特征的学习。

学无止境。 5547

Leetcode 1096:花括号展开 II(超详细!!!)

如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串,定义下面几条语法规则: 如果只给出单一的元素x,那么表达式表示的字符串就只有"x"。 例如,表达式 {a} 表示字符串 "a"。 而表达式 {ab} 就表示字符串 "ab"。 当两个或多个表达式并列,以逗号分隔时,我们取这些表达...

coordinate的博客 2949

CISSP/CCSP证书到手后别松懈!保姆级维持攻略:CPE积分怎么攒?年费怎么交?

本文为CISSP/CCSP持证者提供详细的维持认证攻略,重点介绍如何高效积累CPE积分和避免年费缴纳中的常见问题。通过免费与付费资源结合的策略,帮助持证者轻松完成年度认证要求,同时利用认证创造职业价值。

weixin_30859423的博客 416

倾斜摄影与激光点云融合建模:Photoscan+ContextCapture避坑指南

本文详细解析了倾斜摄影与激光点云融合建模的技术流程,重点介绍了使用Agisoft Metashape(原Photoscan)与ContextCapture进行数据融合的实战指南。文章深入探讨了数据预处理、坐标系统一、空三计算策略及在ContextCapture中进行点云配准等关键步骤,旨在帮助从业者规避常见陷阱,高效构建兼具高精度几何与真实纹理的三维实景模型。

weixin_29062613的博客 250

leetcode 1096. Brace Expansion II

Under a grammar given below, strings can represent a set of lowercase words. Let'suse R(expr)to denote the set of words the expression represents. Grammar can best be understood through simple exa...

cmy203的博客 1330

SDMA 如何实现设备对主机内存的访问

摘要:SDMA(System Direct Memory Access)是PCIe设备直接访问主机内存的核心机制,使外设无需CPU干预即可高效读写系统RAM。其实现原理包括:设备作为主控发起DMA请求,通过PCIe Memory TLP访问主机物理地址;完整通路涉及驱动分配DMA安全内存、设备配置、地址转换(IOMMU)和中断通知等步骤;关键技术涵盖地址类型(HPA/IOVA)、TLP格式、缓存一致性和安全防护机制。SDMA广泛应用于GPU、网卡、NVMe等高性能场景,是现代异构计算的基础技术,需软硬件协同

MHD0815的博客 240

Codeforce 1096 :F. Inversion Expectation(期望 ,分析)

题目大意:有一个长为 n 的排列,有一部分数字丢失了,问你逆序对数的期望是多少。 题解: 答案的贡献分成三部分: 未知部分相当于一个随机排列,设未知数字的个数为cntcntcnt,则未知数字之间的贡献为:ans=cnt∗(cnt−1)4ans = \frac{cnt * (cnt - 1)}{4}ans=4cnt∗(cnt−1)​ 已知数字和已知数字之间的贡献:经典树状数组nlogn做法可以求得 ...

qq_41997978的博客 598

SIMULINK开发项目实例 1000 例专栏之第960例--基于电力系统稳定性的建模与仿真场景:-含分布式电源的配电网电压稳定性研究

间歇性与随机性:例如,太阳能依赖于日照强度,风能依赖于风速,这使得它们的输出功率具有不确定性。逆变器接口:大多数分布式电源通过逆变器接入电网,这对电网的动态响应特性产生了影响。位置分散:通常分布在用户侧或靠近负荷中心的位置。本文详细介绍了如何使用Simulink结合Simscape Electrical 构建一个用于研究含分布式电源配电网电压稳定性的模型,并提供了详细的仿真流程说明。

xiaoheshang_123的博客 153

55、磁吸附爬壁机器人运动仿真与位置控制

本文针对大型船舶喷涂作业中人工操作存在的高风险与低效率问题,提出一种基于麦克纳姆轮的磁吸附爬壁机器人运动控制方案。通过建立Adams虚拟样机与MATLAB/Simulink控制系统的联合仿真模型,设计了速度和位置双闭环控制系统,采用模糊PI控制器优化速度响应,并引入位置反馈补偿重力引起的垂直偏移。研究结果表明,模糊PI控制器在响应速度、超调抑制和位置稳定性方面优于传统PI控制器,且位置反馈能有效校正横向移动中的下坠现象,尤其在跨越焊缝等复杂工况下仍可保持稳定运行,显著提升了爬壁机器人的运动精度与作业可靠性。

linux6sysadmin的博客 168

[Codeup 1096] A: 复原二叉树 先中定序

http://codeup.cn/problem.php?cid=100000611&amp;pid=0 问题 A: 复原二叉树 时间限制: 1 Sec  内存限制: 32 MB 提交: 107  解决: 80 [提交][状态][讨论版][命题人:外部导入] 题目描述 小明在做数据结构的作业,其中一题是给你一棵二叉树的前序遍历和中序遍历结果,要求你写出这棵二叉树的后序遍历结果。 输入 ...

荷叶田田 833

基于 YOLOv26 的 PCB 板缺陷检测:工业级视觉实战

本文提出了一种基于YOLOv26的PCB板缺陷检测系统,通过深度学习技术实现对PCB板缺陷的自动化检测。系统能够识别短路、开路、焊点不良等8种常见缺陷,具有高精度、多类别分类和实时推理等优势。文章详细介绍了系统架构,包括数据采集、预处理、YOLOv26模型检测和后处理模块。在代码实现部分,给出了环境配置、数据预处理与增强的具体方法,使用Albumentations库进行图像增强处理。该系统为电子制造业提供了高效、准确的PCB质量检测解决方案,显著提升了检测效率和准确性。

一键难忘的博客 339

CodeForces 1096D(线性dp)

传送门 •题意 给出一个长度为n的字符串s,对于每个$s_{i}$有$a_{i}$的价值 让你删除最小的价值,使得字符串中不存在$hard$这个子序列 •思路 设dp[1]是不存在以$h$为前缀的最小代价 dp[2]是不存在以$ha$为前缀,也就是不存在$h$或者不存在$a$或者不存在$ha$的最小代价 同理,dp[3]是不存在以$har$为前缀的最小代价,dp...

deoigfot051992的博客 244

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

1096: 水仙花数(函数专题,多实例)(细节较多)

题目描述 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。 现在要求输出所有在m和n范围内的水仙花数。 输入 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。 输出 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔

weixin_51609029的博客 1349

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

leetcode 1096. brace-expansion-ii 花括号展开 II

题目 解法:c++ 递归, 笛卡尔积 //执行用时 : //20 ms, 在所有 C++ 提交中击败了95.00%的用户( 速度不稳定,这是最快速度 :( ) //内存消耗 :15.2 MB, 在所有 C++ 提交中击败了100.00%的用户 //考虑以下的思路: 逐层递归写法 //对于某个递归函数,返回当前函数的unordered_set结果, // 以及一个int坐标,如果有}则表...

blacksea3的博客 772

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Mysql-error code汇总

OS error code 1: Operation not permitted OS error code 2: No such file or directory OS error code 3: No such process OS error code 4: Interrupted system call OS error code 5: In

文学超的博客 5万+

Codeforce 1096:D. Easy Problem(DP,思维)

题目链接:https://codeforc.es/contest/1096/problem/D 题目大意:有一个字符串数组,每个位置有一个权值,删掉这个字符要付出这个位置的字符的权值的代价,字符串中可能包含了 “hard” 字符序列,你要删掉一些字符使得字符串中不会出现 “hard” 子序列,求最小删除代价。 题解:考虑 “hard” 字符串,当前字符是 “d” 时,要么删掉这个 “d”,要么在...

qq_41997978的博客 359

leetcode1093-1096、1103-1106

周赛142 大样本统计 public double[] sampleStats(int[] count) { double min = 256,max = 0,avg,mode = 0,mid = 0,mmaxnum = 0,sum = 0,c = 0; for(int i = 0;i < 256;i++) { if(count[i] != 0){ ...

u014031563的博客 283

RFC双语计划:rfc1096中文版(中英文对照)............Telnet X显示定位选项

RFC双语计划:rfc1096中文版(中英文对照)............Telnet X显示定位选项http://kummerwu.web.officelive.com/Documents/rfc1096-0.html更多RFC中文版,中英文对照版,请查阅http://kummerwu.web.officelive.com/Documents/index.html这儿目前收录来OSPF,

Kummer的专栏 844

LeetCode 1096. 花括号展开 II

其实就是"(1 + 2) * (3 * (4 + 5))"这种的表达式求值,只是把数字的结果换成了字符串的集合。如果把样例1写成"{a + b} * {c * {d + e}}"是不是就感觉很眼熟了呢?2.’*‘是当数字前面是'}'或者’{‘前面是数字或者'}'的时候。接下来就是用栈来计算表达式的值了。【表达式求值 + 栈】','可以来表示’+‘

Sasakihaise_的博客 283

codeforces 1096D Easy Problem dp(字符串DP)

codeforces 1096D Easy Problem dp 题目链接[https://codeforces.com/problemset/problem/1096/D] 题意:给你一个字符串,每个字符都有对应的价值,然后给你一个目标串hard,要求这个字符串中没有包含hard的子序列(即,可不连序,如haarrdd也不允许),问删除若干个字符后,达到这个要求,问删除的最小价值。 题解:二维D...

weixin_43843730的博客 397

CodeForces - 1096D Easy Problem (DP,前缀)

???? ???? ???? 以前面不含有har为例,遇到r,可以选择删或者不删,不删则前面不能含有ha,删的话就加上当前的a[ i ],还有就是根据这个递推关系,需要先一步判断完不含有h再判断ha,再判断har, //dp[1]前面不含有h //dp[2]前面不含有ha //dp[3]前面不含有har //dp[4]前面不含有hard char s[MX]; int n,a[MX]; ll dp[MX][5]; ...

欢迎光临 我的心 291

1096 Consecutive Factors (20分)[因数]

By Jalan 文章目录**By Jalan**知识工具需求题干例子例1输入输出例2输入输出例3输入输出题解第一次思路编写用时代码CPP运行用时结尾 知识工具需求 题干 给一个数求最长连续因数(注意不是质因数) 例子 例1 输入 630 输出 3 5*6*7 例2 输入 6 输出 2 2*3 例3 输入 7 输出 1 7 题解 第一次 思路 注意这个题不是简单的因数分解,而是求有没有连续的因数,因此策略应该是一个一个除,再可以整除的时候循环检测接下来几位能不能整除,统计本次可以整除的数量和末位

JalanChao的博客 710

(异或) 签到

签到 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Others) SubmitStatistic Next Problem Problem Description BUAA-SCSE 新家族又要迎来新的同学了。这次的妹子颇多,足足有n人之多(1 董适早早地就掌握了她们每

ooon 883

CodeForces 1096F Inversion Expection(树状数组 + DP + 组合计数)

    好久没有做一道这么对胃口的题了…… 大致题意:给出一个1..n的全排列,但是其中有些数字被替换成了-1。我们设给出数列中-1的个数为x,那么原来的全排列就有x!种,而且告诉你取这x!种每一种的概率相等,现在问你原排列的逆序对的期望是多少。 很显然,这个数列分为两个部分,一个部分是已经给出的正整数,另一部分是-1。那么相应的,逆序对可以分为三个部分,一个是正整数部分内部逆序对...

alpc_qleonardo 724
上一篇: LeetCode #360. Sort Transformed Array
下一篇: LeetCode #1047. Remove All Adjacent Duplicates In String
LawFile
博客等级 码龄10年 5粉丝 627原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值