我正在编写一个数独程序。我发现判断数组中的数字是否互相重复是很困难的。
现在我有一个数组:int streamNum[SIZE]
- 如果 SIZE=3,我可以像这样处理这个问题:
if(streamNum[0]!=streamNum[1])...
- 如果 SIZE=100,我认为我需要更好的解决方案,有什么标准做法吗?
最佳答案
有几种不同的方法可以做到这一点,我想最简单的是编写两个循环
bool has_duplicate = false;
for (int i = 0; i < SIZE && !has_duplicate; ++i)
for (int j = i + 1; j < SIZE && !has_duplicate; ++j)
if (streamNum[i] == streamNum[j])
has_duplicate = true;
if (has_duplicate)
{
...
}
else
{
...
}
第一个循环遍历数组中的每个元素,第二个循环检查数组的其余元素中是否存在重复项(这就是它从 i + 1
开始的原因)。一旦找到重复项,两个循环都会退出(这就是 && !has_duplicate
的作用)。
这不是最有效的方法,更有效的方法是在查找重复项之前对数组进行排序,但这会同时修改数组的内容。
我希望我已经足够了解您的要求。
关于c++ - 如何判断数组100的个数不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19206458/