gpt4 book ai didi

c - 如何检查数组是否包含 1 到 n^2 个整数?

转载 作者:行者123 更新时间:2023-12-02 20:57:18 25 4
gpt4 key购买 nike

假设我想检查一个 3x3 数组,并且希望它包含从 1 到 9 的所有数字。除了我在下面写下的方法之外,我想不出任何有效的方法。有没有更好的方法来解决这个问题?

int i, size, row, col, num = 1, valid = 0;

for(i=0; i<size*size; i++)
for(row=0; row<size; row++)
for(col=0; col<size; col++)
if(num == arr[row][col]) {
num++;
valid++;
}

最佳答案

是的。有更好的方法。

使用 bool 数组而不是第三个循环会更优化。保留一个 bool 数组,最初全部设置为 false。对于找到的每个数字,将数组中相应的索引标记为 true。在行和列循环结束时,如果数组中的所有条目都设置为 true,则您找到了所有数字。

为了进一步优化,您可以声明一个计数器变量。每次找到一个数字时,请使用 bool 数组来检查该数字是否已找到。如果不是,则增加计数器。在循环结束时,如果计数器为 9,则您找到了 9 个唯一的数字。

如果发现重复项,您甚至可以提前终止。这将进一步提高性能,但只有在要查找的唯一数字的数量和它们居住的空间数量相同的情况下才有效。 IE。如果您有 18 个空格并想要检查所有数字 1-9,则这是行不通的。

关于c - 如何检查数组是否包含 1 到 n^2 个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39825982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com