将整数数组映射到字符串数组时如何进行排列?

时间:2014-03-27 00:46:52

标签: c arrays encryption permutation

如何在C编程中使用字符串字符数组编写排列方法,同时将每个字符映射到整数?例如,我有10个整数的排列:

1,0,2,3,5,4,6,9,8,7 - 不一定按顺序

和一个包含少于400个字符的字符。我将它们都存储到2个独立的数组中,但是如何将每个整数映射到每个字符?在映射它们之后,我将如何编写排列方法?

两个阵列的大小都不相同。置换数组有10个值,char数组少于400个字符,但我只是初始化为:char text [400];每个数组的大小都不会移动。

更好的解释:

我在想,如果我有10个整数(0 - 9)和下面的排列 - 每个排列不能有相同的数字:

0,1,2,3,4,5,6,7,8,9 - 原始

1,0,3,6,7,4,5,9,2,8 - 排列

Apple,bee - 10个字符的文本,包括空格和逗号

所以通过应用上面的排列,我会得到类似的东西:

' pAl,epe'

如果您使用该排列的反转,您将得到Apple,bee'试。

原始索引[0]是' A'在Apple中应该是 - 并且通过排列,它可以通过' p'因为1指数...等等。

那我该如何实现呢?换句话说,我如何将排列映射到每个字符并让它切换位置?我还没有学过结构。

1 个答案:

答案 0 :(得分:1)

第一种情况

只需要在数组之间建立隐式链接。

Array[int]    -->      Array[string]           
   1          -->           "toto"              Array[0]
   0          -->           "titi"              Array[1]
   2          -->           "tutu"              Array[2]
  ...

然后,如果你想要置换两个元素,你可以移动字符串指针

第二种情况

你想在你的数组之间建立一个真正的链接,所以我建议你做一个结构:

struct example
{
   int ArrayInt[10];
   char *ArrayPointer[10];
};

其中ArrayPointer将包含位于字符串数组中的字符串的地址。

示例:

           STRUCTURE

Array[int]   Array[char *]                    ArrayString

0            &ArrayString[1]                  "toto"

1            &ArrayString[0]                  "titi"

2            &ArrayString[2]                  "tutu"

数字0用“titi”

映射

带有“toto”的数字1

第2号“tutu”

要进行排列,只需更改结构中的指针

即可

可以吗?