![]() |
1
12
嗯,可能不是我写的方式,但是:
是你的意见,我不是 完全地 清楚地回答这个问题;如果你的意思是“为什么这个有用?”-除此之外,还有一系列蛮力的场景,你想尝试不同的排列方式-例如,对于诸如差旅销售人员之类的小订单问题(这些问题不够大,不足以保证有更复杂的解决方案),你可能想检查是否最好去基地、A、B、C、基地、基地、A、C、B、基地、基地、B,A、C、BASE }等。 如果你的意思是“我怎么用这个方法?”-未经测试,但类似于:
如果你的意思是“它是如何工作的?”-迭代器块(
|
![]() |
2
1
C有一个yield关键字,我认为它的工作原理与您的python代码的工作原理基本相同,所以要得到一个基本上直接的翻译不太难。
然而,这是一个递归的解决方案,所以尽管它很简单,但它是次优的。我个人并不理解所有涉及的数学,但对于高效的数学排列,你需要用到
factoradics
. 这篇文章应该有助于:
[更新]:另一个答案提出了一个很好的观点:如果你只是使用排列来进行无序排列,还有更好的选择。具体来说, Knuth/Fisher-Yates shuffle . |
![]() |
3
0
虽然您不能在保持简洁的同时移植它,但是您可以非常接近它。
|
![]() |
4
-6
不完全到我必须承认的程度后,一些评论,但下面的代码可以用来生成一个随机排列的有限序列。它是
Fisher-Yates shuffle algorithm
. 该示例使用
按随机值排序(在本例中是
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 4 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 5 月前 |