标签: permutation

电话号码代表的数字排列

我在2天内接受采访,我很难找到这个问题的解决方案:我想要做的是......对于任何电话号码......程序应该打印出它代表的所有可能的字符串.例如.)数字中的2可以用'a'或'b'或'c'代替,3代表'd''e''f'等.这样可以形成多少可能的排列给出了电话号码.我不希望任何人为它编写代码......一个好的算法或伪代码会很棒.

谢谢

permutation phone-number

0
推荐指数
1
解决办法
1万
查看次数

寻找"多米诺组合"算法

我将以编码器的形式完成我的学徒生涯,并且我有一个很好的j2me项目可以继续工作,但我不得不承认我对数学算法并不如我所希望的那么好.

我的问题是从一组给定的值中创建所有可能的"多米诺骨牌对".例如:可能的值从0到6.现在想象一些具有这些值的多米诺骨牌.输出应该是这样的:

00
01
02
03
04
05
06
11
12
13
...

每对只出现一次,但有两个相等值的对是可能的.

我已经搜索过这个问题了,但是我找不到解决这个问题的方法,或者我真的不明白这些算法是如何工作的.

我真的很感激任何解释和算法.随意发布替代解决方案.我宁愿不只是有一个解决方案,但也要理解它;)

algorithm combinations permutation

0
推荐指数
1
解决办法
1708
查看次数

如何获得具有固定字符位置的字符串的所有组合?

我需要找到一种方法来生成一个字符串与特定字符的所有组合,以便始终在PHP中显示.

例如,给定一个字符串'ABCD',并且我想获得字符串的所有组合和字符'B',我希望得到:

数组('B','BC','BCD','B D','AB','ABC','AB D','ABCD')

缺少的字符将替换为空格.有人有主意吗?

php string combinations permutation

0
推荐指数
1
解决办法
543
查看次数

Permuting Magic Squares

我在编写用于求解Magic Squares的递归置换函数时遇到了一些麻烦.对于这个函数,我不允许使用二维数组,只能使用列表.以下是我目前的情况:

def permute(size):
    magicSquare = []
    for value in permute(size**2):
        for pos in range(size**2 + 1):
            magicSquare.append(value)
    return magicSquare
Run Code Online (Sandbox Code Playgroud)

size 由用户通过命令行参数定义.

如果上面写的函数完成了置换值的任务,我会感到有些困惑.

python recursion permutation magic-square

0
推荐指数
1
解决办法
4571
查看次数

使用Perl的排列

我正在尝试编写一个简单的递归Perl例程来生成数组的所有排列.我没有任何提供例程的模块,我也无法安装它们.这是我到目前为止的代码:

sub permute
{
   my @array = @_;
   if (@array == 0)
   {
      return;
   }
   else
   {
      my $accum = "";
      my $result = permute_with_accumulator($accum, @array);
      return $result;
   }
}

sub permute_with_accumulator
{
   my ($accum, @array) = @_;
   if (@array == 1)
   {
      my $element = $array[0];
      $accum .= "$element,";
   }
   else
   {
      my $i;
      for ($i = 0; $i <= $#array; $i++)
      {
         $accum .= "$array[$i] ";
         my @new_array = ();
         if ($i == 0)
         {
            @new_array = @array[1..$#array]; …
Run Code Online (Sandbox Code Playgroud)

perl permutation

0
推荐指数
1
解决办法
4329
查看次数

计算R中所有单词排列中的字母数量

我有一些话:

shapes<- c("Square", "Triangle","Octagon","Hexagon")
Run Code Online (Sandbox Code Playgroud)

我想成对安排它们:

shapescount<-combn(shapes, 2)

shapescount

[,1]       [,2]      [,3]      [,4]       [,5]       [,6]     
[1,] "Square"   "Square"  "Square"  "Triangle" "Triangle" "Octagon"
[2,] "Triangle" "Octagon" "Hexagon" "Octagon"  "Hexagon"  "Hexagon"
Run Code Online (Sandbox Code Playgroud)

我想计算成对中每个字母的分组,例如第一对对于"Square"为"6"而对于"Triangle"为"8"对于第一对给出"14",依此类推.

r permutation counting

0
推荐指数
1
解决办法
86
查看次数

获得1到n的第k个排列

我从网站上检查过,这称为单峰置换,它定义为只有一个局部最大值的序列.例如n = 5:

12345
12354
12453
12543
13452
13542
14532
15432
23451
23541
24531
25431
34521
35421
45321
54321
Run Code Online (Sandbox Code Playgroud)

是否有算法来获得第k个单峰排列?

algorithm permutation sequence

0
推荐指数
1
解决办法
418
查看次数

在Java中生成几个列表的所有排列

我有n清单,例如:

L_1 = [a_11, a_12, ...]
L_2 = [a_21, a_22, ...]
...
L_n = [a_n1, a_n2, ...]
Run Code Online (Sandbox Code Playgroud)

其中i次列表具有k_i的元素。现在,我想生成所有n-elements列表,其中ith元素来自L_i,我的意思是:

[a_11, a_21, ..., a_n1]
[a_11, a_21, ..., a_n2]
...
[a_11, a_22, ..., a_n1]
[a_11, a_22, ..., a_n2]
...
[a_12, a_21, ..., a_n1]
[a_12, a_21, ..., a_n2]
...
[a_12, a_22, ..., a_n1]
[a_12, a_22, ..., a_n2]
...
Run Code Online (Sandbox Code Playgroud)

列表总数应等于k_1*k_2*...k_n。您能描述这种算法的伪代码还是使用Java代码?当列表数量被硬编码时,我可以使用嵌套的for循环来完成此操作,但是当n在运行时可自定义时,我将被完全阻止。

java math permutation pseudocode discrete-mathematics

0
推荐指数
1
解决办法
1286
查看次数

random_shuffle和srand()每次给我相同的结果

我正在尝试对字母表的随机排列进行一些处理,但是每个排列产生相同的结果,尽管使用srand(myseed)
我已经包含了<algorithm>标题.

string create_permutation(unsigned seed)
{
    srand(seed);
    string permutation = ALPHABET;
    random_shuffle(permutation.begin(), permutation.end());
    return permutation;
}

cout << create_permutation(2) << endl; // or 3, 4, 5 etc
// continuously returns 'XQACKHSLOJ,TRBZNGV.W FIUEYDMP
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

编辑:最小,完整和可验证的例子

编辑2:调整到mcve

#include <iostream>
#include <algorithm>   

using namespace std;

const string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,' ";
string create_permutation(unsigned seed)
{
    srand(seed);
    string permutation = ALPHABET;
    random_shuffle(permutation.begin(), permutation.end());
    return permutation;
}

int main(){    
    cout << create_permutation(2) << endl; // or 3, 4, 5 etc
    // …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm permutation

0
推荐指数
1
解决办法
2119
查看次数

使用置换和递归的性能有限

我正在编写一个程序,该程序计算通过其概率加权的最长条纹,并使用递归来获取所有可能的情况。这是我正在做的编码挑战:https : //open.kattis.com/problems/winningstreak

我注意到,由于递归,对于较大的输入,我拥有的置换函数并不是最有效的。输入示例为3,它将为matchs数组添加以下内容:000、010、001、011、100,110,101,111

public static void Permutations(string text, int numberOfGames,     List<String> matches)
    {
        if (numberOfGames > 0)
            for (int j = 0; j < 2; j++)
                Permutations(text + j.ToString(), numberOfGames - 1, matches);
        else
        {
            matches.Add(text.ToString());
        }

    }
Run Code Online (Sandbox Code Playgroud)

我的问题在于较大的输入(示例500),因为这会导致程序崩溃并引发错误:垃圾收集器无法为主要堆段分配16384字节的内存。还有其他方法可以改善此递归,以便在较大的输入上更好地运行吗?

感谢大伙们!

c# recursion permutation repeat

0
推荐指数
1
解决办法
206
查看次数