0

在为程序编写工作函数时遇到问题,函数需要给出列元素不重复的列数。

例如对于数组:

  • 1 2 3 4
  • 1 3 1 1
  • 2 2 2 2

在这种情况下,uniqueColumns 将是:

  • 3 4
  • 1 1
  • 2 2

程序应该给出:2!

这是代码部分,

int uniqueColumns = 0;
int fail;

for (int currentColumn = 0; currentColumn < totalColumns; currentColumn++)
{
    fail = 0;
    for (int currentRow = 0; currentRow < totalRows; currentRow++)
    {
        for (int rowOffset = currentRow + 1; currentRow < totalRows; currentRow++)
        {
            if (array[currentRow][currentColumn] == array[currentRow+rowOffset][currentColumn])
            {
                fail = 1;
                break;
            }
            else
            {
                fail = 0;
            }
        }
        if (fail == 1)
        {
            break;
        }
    }

    if (fail == 0)
    {
        uniqueColumns++;
    }
}
4

1 回答 1

0

我假设缺少的问题是“为什么我的代码不起作用?”


这可能不是你唯一的问题,但它一定是一个。您正在比较:

array[currentRow][currentColumn] == array[currentRow+rowOffset][currentColumn]

当你的rowOffset范围从currentRow+1向上。这显然不是你想要的。如果你比较就好了

array[currentRow][currentColumn] == array[rowOffset][currentColumn]

rowOffset范围从 1 向上。


我可能完全错了,但我认为这是一个编程练习。如果是这样,我认为您的讲师很可能希望您做一些更聪明的事情来检测重复元素,而不是比较所有对。你知道数组元素的值吗?如果是的话,你能想出更好的办法吗?

于 2013-10-30T19:49:02.233 回答