如何将数字组合成一个独特的总和

时间:2012-11-04 21:18:51

标签: c# algorithm

我不记得这个名字,但我记得曾经见过这个名字。 我需要总结一个序列:

2:hand 
5:leg 
13:head

成一个像7的数字。

然后当我得到7时,我知道它是手+腿。如果我得到20,我知道它是手+腿+头。

这项技术的名称是什么?

3 个答案:

答案 0 :(得分:3)

您的意思是Flags枚举吗?

[Flags]
enum Parts
{
    Hand = 1,
    Leg = 2,
    Head = 4,
}

示例:

Parts p = Parts.Hand | Parts.Leg;

bool isHand = (p & Parts.Hand) != 0;

答案 1 :(得分:2)

您正在谈论一点掩码,通常使用用[FlagsAttribute]修饰的枚举来实现。这些值将是2的幂。

有关在C#中使用[FlagsAttribute]的说明,请参阅以下SO答案。

https://stackoverflow.com/a/3261485/444610

答案 2 :(得分:1)