gpt4 book ai didi

algorithm - 具有奇怪循环重复的独特排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:02 25 4
gpt4 key购买 nike

我有一些这样的字符串:

'RRSSTT'
'RRRSSSTTT'
'RRRRSSSSTTTT'
etc...

我需要使用此属性提取所有唯一排列:

  • 'RRSSTT' ; 'RRTTSS' ; 'SSRRTT' ; 'SSTTR' ; 'TTRRSS' ; 'TTSSRR' 都是相同的字符串,并且
  • 'RSTRST' ; 'RTSRTS' ; 'TSRTSR' ; 'TRSTRS' ; 'SRTSRT' ; 'STRSTR' 都是相同的字符串。

使用命令 perms 我获得所有排列(如果字符串有 6 个元素,则排列为 720)。使用 uperms 脚本,我获得了所有唯一的排列(如果字符串有 6 个元素,则排列为 90)。我在 mathworks ( http://www.mathworks.com/matlabcentral/fileexchange/27321-unique-random-permutations ) 上找到了 uperm

到这里为止一切正常,但我需要编写/找到另一种算法来生成具有上述特殊属性的排列。如果字符串是“RRSSTT”,则所需的排列必须是 15。

有人已经遇到过这个问题并且可以帮助我吗?

------编辑------

等价串有15组,举例如下:

Group 1:          Group 6:        Group 11:

'RSTTSR' 'RSTSTR' 'RSSTRT'
'SRTTRS' 'SRTRTS' 'STSRRT'
'STRRTS' 'STRTRS' 'RSRTTS'
'RTSSTR' 'TRSRST' 'STTRSR'
'TRSSRT' 'TSRSRT' 'TRRSTS'
'TSRRST' 'RTSTSR' 'TRTSSR'

Group 2: Group 7: Group 12:

'RSTRST' 'RSSRTT' 'RSSTTR'
'SRTSRT' 'SSTRRT' 'SRRTTS'
'STRSTR' 'RRSTTS' 'STTRRS'
'RTSRTS' 'STTSRR' 'TRRSST'
'TRSTRS' 'TRRTSS' 'TSSRRT'
'TSRTSR' 'TTRSSR' 'RTTSSR'

Group 3: Group 8: Group 13:

'RSTSRT' 'SRRSTT' 'SRSTTR'
'STRSRT' 'SSRTTR' 'SRRTST'
'RSTRTS' 'RRTSST' 'RTRSST'
'STRTSR' 'TSSTRR' 'TSSRTR'
'TRSRTS' 'RTTRSS' 'TSTRRS'
'TRSTSR' 'TTSRRS' 'RTTSRS'

Group 4: Group 9: Group 14:

'SRTRST' 'RSRSTT' 'RRSSTT'
'SRTSTR' 'SSRTRT' 'SSRRTT'
'RTSRST' 'STSTRR' 'SSTTRR'
'TSRSTR' 'RRTSTS' 'RRTTSS'
'RTSTRS' 'TRTRSS' 'TTRRSS'
'TSRTRS' 'TTSRSR' 'TTSSRR'

Group 5: Group 10: Group 15:

'STRRST' 'SRSRTT' 'SRSTRT'
'RSTTRS' 'SSTRTR' 'RSRTST'
'SRTTSR' 'RRSTST' 'STSRTR'
'RTSSRT' 'TSTSRR' 'RTRSTS'
'TRSSTR' 'RTRTSS' 'TSTRSR'
'TSRRTS' 'TTRSRS' 'TRTSRS'

我需要为每个组返回一个字符串,我更喜欢第一个字母为 R 的字符串。抱歉更改符号。

-----编辑 1-----

我会尽力解释原因

str1='RSTRST' 

str2='STRSTR' 

是等价的。

您必须考虑 str1 中的“R”并将其替换为“S”,将“S”替换为“T”,最后将“T”替换为“R”。一组中的所有字符串都是正确的,但在每个组中所有字符串都是等价的,我只需要从每个组中取出一个字符串。

正如烧杯所说,角色替换规则并不总是有效,我需要找到合适的角色。

最佳答案

我想现在我理解了你的代码,这将解决它:

  • 使用 uperm 生成包含所有可能解决方案的集合。
  • uperm 返回的每个解决方案调用 [a]=unique(solution,'stable') 并且仅当 RST 为退回(或任何固定订单)。

关于algorithm - 具有奇怪循环重复的独特排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com