【发布时间】:2010-03-09 23:56:41
【问题描述】:
我希望获取map<char, vector<char> > 并从中生成每个可能的map<char, char>。
我知道这可能会使用大量内存并需要一些时间。
每个map<char, char> 需要包含每个字母 a-z,并映射到唯一的 a-z 字符。 IE。
ak
bj
cp
dy
电动汽车
调频
嘎
血红蛋白
红外
jq
kn
李
MX
数控
哦
pz
qs
rl
sd
你
uw
VF
工作组
厘米
于
zt
到目前为止,这是我为自己得出的结论:
为了将可能组合的荒谬数量减少到较低的数量,如果 vector<char> 包含超过 5 个元素,我将简单地将其替换为包含来自我的“主”/“原始”的单个字符的 vector<char> 'map<char, char>.
并非所有字符都会出现在地图中的所有vector<char>s 上。需要找到这些字符并将其放入一些“其他”向量中。
这还应该包含一个字符是多个字符键的唯一可能字符的字符(即我正在使用的示例中的 mw - 我不确定如何处理)。
此“其他”向量应用于不可能具有唯一 a-z 字符或多个字符具有相同的单个可能字符的情况。
这是我目前所拥有的一个例子。
我将采取map<char, vector<char> >,如:
a: gjkpqvxz
b: gjkpqvxz
c: gjkpqvxyz
d: mw
e: gjkpqvxz
女:nr
g: 在
h: cf
我:他的
j: gjkpqvxz
k: r
l: h
米:gjkpqvxz
n: gjkpquvxyz
o: 是
p: gjkpqvxz
问:是
r: dl
s: l
t: e
你:dgkpuvy
v: cf
w: bcf
x: dguy
y: f
z:在
这是我的起始地图。在切出超过 5 个的大字符向量并用最佳猜测替换它们之后。如果是大小为 1 的 vector<char>,则该字符映射只有一个组合,并且该字符不能用于任何其他映射,因为它会使其不唯一。我已将其修剪为:
a: k
b: j
c: p
d: mw
e: v
f: n
g: 在
h: c
我:是
j: q
k: r
l: h
米:x
n: 家伙
o: 是
p: z
问:是
r: d
s: l
t: e
你:dguy
v: c
w: 公元前
x: dguy
y: f
z:在
“others”向量包含“o”(我认为重要的是要注意,我认为这应该包含上面示例中的 mw 等情况。因为 d 是唯一可以使用 mw 的地方,但显然与需要每个字母只能使用一次,只能使用其中一个,而另一个则丢失在某个地方。我不知道如何编写一个通用案例以将这些添加到其他向量。)
我正在寻找帮助和指针,以像这样和这种格式从map<char, vector<char> >s 生成所有可能的map<char, char>。它们将用作函数调用中的参数。我不确定从哪里开始写一些一般意义上的东西。我可能会用大量的 for 循环来处理它.
对不起,如果这太像文字墙,或者看起来过于具体或写得不好/问得不好。
感谢所有帮助。
【问题讨论】:
-
您能告诉我们您要解决的问题吗?
-
我的第一个念头是“凯撒密码”……
-
我正在尝试破解替代密码。
标签: c++ vector map permutation combinations