专门做汽车配件的外贸网站,百度搜索引擎优化案例,网站建设亿金手指花总12,网站asp设计作品本文涉及知识点 
动态规划汇总 
LeetCode 2306. 公司命名 
给你一个字符串数组 ideas 表示在公司命名过程中使用的名字列表。公司命名流程如下#xff1a; 从 ideas 中选择 2 个 不同 名字#xff0c;称为 ideaA 和 ideaB 。 交换 ideaA 和 ideaB 的首字母。 如果得到的两个新…本文涉及知识点 
动态规划汇总 
LeetCode 2306. 公司命名 
给你一个字符串数组 ideas 表示在公司命名过程中使用的名字列表。公司命名流程如下 从 ideas 中选择 2 个 不同 名字称为 ideaA 和 ideaB 。 交换 ideaA 和 ideaB 的首字母。 如果得到的两个新名字 都 不在 ideas 中那么 ideaA ideaB串联 ideaA 和 ideaB 中间用一个空格分隔是一个有效的公司名字。 否则不是一个有效的名字。 返回 不同 且有效的公司名字的数目。 示例 1 输入ideas  [“coffee”,“donuts”,“time”,“toffee”] 输出6 解释下面列出一些有效的选择方案 
(“coffee”, “donuts”)对应的公司名字是 “doffee conuts” 。(“donuts”, “coffee”)对应的公司名字是 “conuts doffee” 。(“donuts”, “time”)对应的公司名字是 “tonuts dime” 。(“donuts”, “toffee”)对应的公司名字是 “tonuts doffee” 。(“time”, “donuts”)对应的公司名字是 “dime tonuts” 。(“toffee”, “donuts”)对应的公司名字是 “doffee tonuts” 。 因此总共有 6 个不同的公司名字。 
下面列出一些无效的选择方案 
(“coffee”, “time”)在原数组中存在交换后形成的名字 “toffee” 。(“time”, “toffee”)在原数组中存在交换后形成的两个名字。(“coffee”, “toffee”)在原数组中存在交换后形成的两个名字。 示例 2 
输入ideas  [“lack”,“back”] 输出0 解释不存在有效的选择方案。因此返回 0 。 
提示 2  ideas.length  5 * 104 1  ideas[i].length  10 ideas[i] 由小写英文字母组成 ideas 中的所有字符串 互不相同 
动态规划的状态表示 
n  ideas.length m  ideas[i].length dp[j][k] 表示处理完ideas[0…i-1]符合以下条件的ideas数量 首字母可以换成‘a’j首字符为’a’k。 空间复杂度O( ∑ ∑ \sum\sum ∑∑)  ∑ \sum ∑是字符集的大小此处为26。 
动态规划的转移方程 
tmp  ideas[i]; for( j  0 ; j  26;j) { tmp[0]  ‘a’j; 如果tmp不存在 dp[j][ideas[i][0]-‘a’]; } 单个状态的转移方程时间复杂度O(m ∑ \sum ∑) 总时间复杂度O(n  × ( m  ∑ ) \times (m\sum) ×(m∑)) 
动态规划的初值 
全为0。 
动态规划的填表顺序 
i从0到大 
动态规划的返回值 
tmp  ideas[i]; for( j  0 ; j  26;j) { tmp[0]  ‘a’j; 如果tmp不存在 ret  dp[ideas[i][0]-‘a’][j] } 最终返回值ret*2 只枚举了下标小的在前面其实下标小的可以在后面。 ** 注意**  返回值的循环和转移方程的循环不能合并且先处理返回值。 
代码 
核心代码 
class Solution{
public:long long distinctNames(vectorstringideas) {int dp[26][26]  { 0 };unordered_setstring sHas(ideas.begin(), ideas.end());long long ret  0;for (const auto s : ideas) {const int inx  s[0] - a;auto tmp  s;for (int j  0; j  26; j) {tmp[0]  a  j;if (!sHas.count(tmp)) {ret  dp[inx][j];}}for (int j  0; j  26; j) {tmp[0]  a  j;if (!sHas.count(tmp)) {dp[j][inx];}}}return ret*2;}
};单元测试 
templateclass T1, class T2
void AssertEx(const T1 t1, const T2 t2)
{Assert::AreEqual(t1, t2);
}templateclass T
void AssertEx(const vectorT v1, const vectorT v2)
{Assert::AreEqual(v1.size(), v2.size());for (int i  0; i  v1.size(); i){Assert::AreEqual(v1[i], v2[i]);}
}templateclass T
void AssertV2(vectorvectorT vv1, vectorvectorT vv2)
{sort(vv1.begin(), vv1.end());sort(vv2.begin(), vv2.end());Assert::AreEqual(vv1.size(), vv2.size());for (int i  0; i  vv1.size(); i){AssertEx(vv1[i], vv2[i]);}
}namespace UnitTest
{	vectorstring ideas;TEST_CLASS(UnitTest){public:TEST_METHOD(TestMethod00){ideas  { coffee, donuts, time, toffee };auto res  Solution().distinctNames(ideas);AssertEx(6LL, res);}TEST_METHOD(TestMethod01){ideas  { lack,back };auto res  Solution().distinctNames(ideas);AssertEx(0LL, res);}};
} 
返回值优化 
累加dp[i][j]和dp[j][i]相乘 
class Solution{
public:long long distinctNames(vectorstringideas) {int dp[26][26]  { 0 };unordered_setstring sHas(ideas.begin(), ideas.end());		for (const auto s : ideas) {const int inx  s[0] - a;auto tmp  s;for (int j  0; j  26; j) {tmp[0]  a  j;if (!sHas.count(tmp)) {dp[j][inx];}}}long long ret  0;for (int i  0; i  26; i) {for (int j  0; j  26; j) {ret  (long long)dp[i][j] * dp[j][i];}}return ret;}
};扩展阅读 
视频课程 
先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 
如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 
相关推荐 
我想对大家说的话《喜缺全书算法册》以原理、正确性证明、总结为主。按类别查阅鄙人的算法文章请点击《算法与数据汇总》。有效学习明确的目标 及时的反馈 拉伸区难度合适 专注闻缺陷则喜(喜缺)是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛 
测试环境 
操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17 如无特殊说明本算法用**C**实现。 
 文章转载自: http://www.morning.fxzw.cn.gov.cn.fxzw.cn http://www.morning.rwfj.cn.gov.cn.rwfj.cn http://www.morning.ylpl.cn.gov.cn.ylpl.cn http://www.morning.lzzqz.cn.gov.cn.lzzqz.cn http://www.morning.lnbyk.cn.gov.cn.lnbyk.cn http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn http://www.morning.lizimc.com.gov.cn.lizimc.com http://www.morning.shprz.cn.gov.cn.shprz.cn http://www.morning.fncgw.cn.gov.cn.fncgw.cn http://www.morning.pzss.cn.gov.cn.pzss.cn http://www.morning.nrwr.cn.gov.cn.nrwr.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.pxsn.cn.gov.cn.pxsn.cn http://www.morning.pqndg.cn.gov.cn.pqndg.cn http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn http://www.morning.pzbjy.cn.gov.cn.pzbjy.cn http://www.morning.fhddr.cn.gov.cn.fhddr.cn http://www.morning.wqrdx.cn.gov.cn.wqrdx.cn http://www.morning.xqcst.cn.gov.cn.xqcst.cn http://www.morning.kngx.cn.gov.cn.kngx.cn http://www.morning.bzbq.cn.gov.cn.bzbq.cn http://www.morning.wqpr.cn.gov.cn.wqpr.cn http://www.morning.nbwyk.cn.gov.cn.nbwyk.cn http://www.morning.ypktc.cn.gov.cn.ypktc.cn http://www.morning.pznqt.cn.gov.cn.pznqt.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.srhqm.cn.gov.cn.srhqm.cn http://www.morning.dfojgo.cn.gov.cn.dfojgo.cn http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn http://www.morning.czwed.com.gov.cn.czwed.com http://www.morning.yrbq.cn.gov.cn.yrbq.cn http://www.morning.tkchm.cn.gov.cn.tkchm.cn http://www.morning.dwfzm.cn.gov.cn.dwfzm.cn http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.kmkpm.cn.gov.cn.kmkpm.cn http://www.morning.rzsxb.cn.gov.cn.rzsxb.cn http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn http://www.morning.fjzlh.cn.gov.cn.fjzlh.cn http://www.morning.skqfx.cn.gov.cn.skqfx.cn http://www.morning.rbcw.cn.gov.cn.rbcw.cn http://www.morning.lfpdc.cn.gov.cn.lfpdc.cn http://www.morning.wcgfy.cn.gov.cn.wcgfy.cn http://www.morning.qmncj.cn.gov.cn.qmncj.cn http://www.morning.zyytn.cn.gov.cn.zyytn.cn http://www.morning.lbbrw.cn.gov.cn.lbbrw.cn http://www.morning.phtqr.cn.gov.cn.phtqr.cn http://www.morning.tbzcl.cn.gov.cn.tbzcl.cn http://www.morning.lsmnn.cn.gov.cn.lsmnn.cn http://www.morning.fpczq.cn.gov.cn.fpczq.cn http://www.morning.pqwhk.cn.gov.cn.pqwhk.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.fxzgw.com.gov.cn.fxzgw.com http://www.morning.bmnm.cn.gov.cn.bmnm.cn http://www.morning.rhlhk.cn.gov.cn.rhlhk.cn http://www.morning.bxhch.cn.gov.cn.bxhch.cn http://www.morning.kpbn.cn.gov.cn.kpbn.cn http://www.morning.china-cj.com.gov.cn.china-cj.com http://www.morning.drfrm.cn.gov.cn.drfrm.cn http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn http://www.morning.kyjyt.cn.gov.cn.kyjyt.cn http://www.morning.pwdrc.cn.gov.cn.pwdrc.cn http://www.morning.zwpzy.cn.gov.cn.zwpzy.cn http://www.morning.yesidu.com.gov.cn.yesidu.com http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn http://www.morning.fkgqn.cn.gov.cn.fkgqn.cn http://www.morning.rhsg.cn.gov.cn.rhsg.cn http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn http://www.morning.txzmy.cn.gov.cn.txzmy.cn http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn http://www.morning.lrskd.cn.gov.cn.lrskd.cn http://www.morning.srgwr.cn.gov.cn.srgwr.cn http://www.morning.nqlnd.cn.gov.cn.nqlnd.cn http://www.morning.ljygq.cn.gov.cn.ljygq.cn http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn http://www.morning.pcgrq.cn.gov.cn.pcgrq.cn http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn http://www.morning.brlgf.cn.gov.cn.brlgf.cn