给定一个集合,用集合里的所有元素组成指定长度的字符串,判断是否可组,如可组,列出所有结果,该如何处理
给定一个集合,用集合里的所有元素组成指定长度的字符串,判断是否可组,如可组,列出所有结果
集合的元素个数是不低于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对于问题的解释,先建图,然后按照图的连通性把点做一下划分,感觉用贪心(后面有路就继续走) + 欧拉回路的消圈法就可以。
------解决方案--------------------
集合的元素个数是不低于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对于问题的解释,先建图,然后按照图的连通性把点做一下划分,感觉用贪心(后面有路就继续走) + 欧拉回路的消圈法就可以。
------解决方案--------------------