我有一个由 n 个整数组成的数组(不一定是不同的!),我想遍历所有大小为 k 的子集。但是我想排除所有重复的子集。
例如
array = {1,2,2,3,3,3,3}, n = 7, k = 2
Run Code Online (Sandbox Code Playgroud)
那么我想要迭代的子集(每次一次)是:
{1,2},{1,3},{2,2},{2,3},{3,3}
Run Code Online (Sandbox Code Playgroud)
这样做的有效算法是什么?递归方法是最有效/最优雅的吗?
如果您有特定于语言的答案,我将使用 C++。
这是两个哈希生成器:
现在,我的问题是:为什么在尝试散列char'€'(0x80)时哈希值会有所不同?我认为这是因为'€'不是普通的ASCII字符.两个哈希中的哪一个是"正确的"?
我正在尝试使用C#计算哈希生成器1返回的哈希值.此散列函数不会返回它.
private string GetMD5Hash(string TextToHash)
{
if ((TextToHash == null) || (TextToHash.Length == 0))
{
return string.Empty;
}
MD5 md5 = new MD5CryptoServiceProvider();
byte[] textToHash = Encoding.Default.GetBytes(TextToHash);
byte[] result = md5.ComputeHash(textToHash);
return BitConverter.ToString(result).Replace("-", "").ToLower();
}
Run Code Online (Sandbox Code Playgroud)
我怎么能改变它所以它返回我想要的哈希?
附加信息:我制作了一个AutoIt脚本:
#include <Crypt.au3>
ConsoleWrite(StringLower(StringMid(_Crypt_HashData(Chr(128), $CALG_MD5),3)) & @CRLF)
Run Code Online (Sandbox Code Playgroud)
它返回我想要的哈希!但是我需要一个C#代码:)