给定一个集合,用集合里的所有元素组成指定长度的字符串,判断是否可组,如可组,列出所有结果,该如何处理

给定一个集合,用集合里的所有元素组成指定长度的字符串,判断是否可组,如可组,列出所有结果
集合的元素个数是不低于6个,不高于15个

每个元素都是00~99这样的长度为2的字符串

要求组成指定长度的新字符串,要求是,集合中所有的元素必须都出现在新字符串里,即集合的每一个元素都必须是新字符串的子串。

例如

集合为{00,12,58,85,69,25}

要求组成一个长度为8位的字符串,则不可组,不存在一个长度为8的字符串,包含集合中的每一个元素

要求组成一个长度为9位的字符串,则可组,有6个结果,新字符串为001258569、006912585、125850069,125856900,690012585,691258500


与我之前发的这帖类似
http://topic.****.net/u/20111118/09/7d7df953-ac81-4cf8-b254-b8fe89718fe7.html
但发那个帖时需求没有搞清楚,最终结果以这帖为准

如果有有效方案,两帖一起结

------解决方案--------------------
这个数据规模的话,穷举都行啊

先把字符串中相同的字符串归成一组
然后找出并记录下每组字符串的可行的后续组


然后开始递归穷举:

copy剩余的组;
从可行的后续组中(第一次时,所有组都是可行组)取一组中的一个串,同时把该串从剩余组中删除;
如果剩余组为空,则是一个答案;
else:
如果该串的所有后续组中字符串为空,则不是一个答案。
else
继续递归
------解决方案--------------------
看了lz对于问题的解释,先建图,然后按照图的连通性把点做一下划分,感觉用贪心(后面有路就继续走) + 欧拉回路的消圈法就可以。
------解决方案--------------------
探讨
引用:
引用:
引用:
有没有同一个元素多次出现的情况?


有可能
比如集合是
{66,66,66,66,61}
组成9位长度的字符串
那也是可组的

结果是666666661、666666616、666666166……616666666

只要集合中的元素都出现结果中……