【发布时间】:2014-05-21 21:59:13
【问题描述】:
我正在尝试“蛮力”一个数字难题,其中一个标准是计算只使用 0-9 中的每个数字一次。我首先提取一组变量的每个可能答案的单个数字(但将其更改为数组不会有什么大问题),但确定它们是否唯一是一个瓜 - 看起来可能很多 if语句条件:if a!=b && b!=c && a!=c;这将得到 10 个变量的长篇大论!
我错过了一个明显的技巧吗?碰巧我正在使用C,但可以使用Java;绝不是这方面的专家。
【问题讨论】:
-
您可以尝试使用位向量。将变量声明为 unsigned short int,并将每个位视为不同的数字(例如:数字 0 是位 0,数字 1 是位 1..等),稍后您可以查看数字是否为 1、2 , 4, 8, 16, ... 检查是否只有一位数字。
-
1 到 9 之间的九个唯一数之和为 45;这有帮助吗?
-
@EricLippert 可能不是,因为其他各种 10 位数字的总和也为 45
-
@MattMcNabb:好点。 John Tortugo 的建议更好。