关注
全排列,直到找到首尾想接的排列
优化:如果一个序列前面的部分不首尾想接,则后面不必计算
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;
}
};
查看原帖
点赞 评论
相关推荐
11-28 17:48
中山大学 C++ 点赞 评论 收藏
分享
11-29 14:47
字节跳动_后端开发(准入职员工) 逆天 hr。。先是在面试之前给我换了两次面试时间,面试完就不回消息了。面试时候我已经明确说了我不接受上海和深圳,没有 hc 你给我挂了就是了现在说这个😅化身华黑子,纯逆天
牛客347492458号:被当指标了 佬
点赞 评论 收藏
分享
牛客热帖
正在热议
# 拼多多求职进展汇总 #
237201次浏览 2039人参与
# 机械求职避坑tips #
23593次浏览 249人参与
# 北方华创开奖 #
67036次浏览 552人参与
# 25届秋招总结 #
410173次浏览 4116人参与
# 25届机械人为了秋招做了哪些准备? #
26249次浏览 363人参与
# 地方国企笔面经互助 #
6929次浏览 17人参与
# 阿里云管培生offer #
62430次浏览 1759人参与
# ai智能作图 #
28697次浏览 346人参与
# 虾皮求职进展汇总 #
90985次浏览 747人参与
# 实习,投递多份简历没人回复怎么办 #
2440417次浏览 34744人参与
# 软件开发投递记录 #
1481375次浏览 23947人参与
# 我的实习求职记录 #
6132391次浏览 84018人参与
# 我在牛爱网找对象 #
74813次浏览 555人参与
# 发工资后,你做的第一件事是什么 #
9052次浏览 42人参与
# 985本硕1个中小厂offer,摆烂or继续努力 #
83223次浏览 602人参与
# 机械人怎么评价今年的华为 #
157930次浏览 1352人参与
# 京东求职进展汇总 #
512877次浏览 4680人参与
# 如果可以,你希望哪个公司来捞你 #
33846次浏览 195人参与
# 你觉得通信/硬件有必要实习吗? #
54771次浏览 698人参与
# 歌尔求职进展汇总 #
42894次浏览 294人参与
# 在职场上,你最讨厌什么样的同事 #
6059次浏览 91人参与
# 如果再来一次,你还会选择这个工作吗? #
115530次浏览 1141人参与