关注
全排列,直到找到首尾想接的排列
优化:如果一个序列前面的部分不首尾想接,则后面不必计算
class Solution {
public:
bool endToEnd(vector<string> vstr) {
// write code here
bool flag = false; //标记是否成功
endToEnd(vstr, 0, flag);
return flag;
}
//交换任意两个字符串获取全排列,start:交换开始的下标
void endToEnd(vector<string> &vstr, int start, bool &flag)
{
int index = 0; //标记该序列首尾不相接开始的地方
if(judge(vstr, index))
{
flag = true;
return;
}
if(index < start) //序列前面的部分不首尾想接,则后面不必计算
return;
for(int i = start; i < vstr.size()-1 && !flag; ++i)
{
for(int j = i+1; j < vstr.size() && !flag; ++j)
{
swap(vstr[i], vstr[j]);
endToEnd(vstr, i+1, flag);
//交换回来,比如0,1交换后,下次需要0,2交换,0需要归位
swap(vstr[i], vstr[j]);
}
}
}
bool judge(vector<string> &vstr, int &index)
{
for(int i = 1; i < vstr.size(); ++i)
if(vstr[i-1].back() != vstr[i].front())
{
index = i;
return false;
}
return true;
}
};
查看原帖
点赞 评论
相关推荐
Aeside:暑期日常一起抓,话说你写两个相同类型的项目不太好吧?
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
11076次浏览 198人参与
# 帆软软件工作体验 #
10644次浏览 50人参与
# 软开人,秋招你打算投哪些公司呢 #
177081次浏览 1334人参与
# 秋招被挂春招仍然能投的公司 #
22235次浏览 216人参与
# 机械制造2024笔面经 #
1515444次浏览 12994人参与
# 1月小结:你过的开心吗? #
5397次浏览 131人参与
# 实习,不懂就问 #
157770次浏览 1380人参与
# AI求职实录 #
17853次浏览 405人参与
# 没关系,至少我的__很曼妙 #
12846次浏览 225人参与
# 今年春招是金一银二嘛? #
30079次浏览 286人参与
# 秋招被确诊为…… #
286698次浏览 1595人参与
# 聊聊你的职场新体验 #
316822次浏览 1857人参与
# 快手年终开大包 #
4080次浏览 57人参与
# 抛开难度不谈,你最想去哪家公司? #
16844次浏览 242人参与
# 为什么有人零实习也能进大厂? #
15981次浏览 277人参与
# 你的第一家实习公司是什么档次? #
13766次浏览 176人参与
# 如果能重来,就业or读研你选哪个? #
271429次浏览 2611人参与
# 赚钱的意义在这一刻具象化 #
12043次浏览 240人参与
# 考研人,我有话说 #
164137次浏览 1243人参与
# Prompt分享 #
18766次浏览 453人参与

