
在这里我们会看到一个有趣的问题。假设给定一个大小为 n 的二进制数组。这里n > 3。true值或1值表示活动状态,0或false表示不活动状态。还给出了另一个数字k。我们必须在 k 天后找到活跃或不活跃的细胞。每次之后 如果左右单元格不相同,则第 i 个单元格的白天状态为活动状态,如果相同,则为非活动状态。最左边和最右边的单元格前后没有单元格。因此,最左边和最右边的单元格始终为 0。
让我们看一个示例来了解这一想法。假设一个数组类似于 {0, 1, 0, 1, 0, 1, 0, 1},k 的值 = 3。让我们看看它每天是如何变化的。
- 1 天后,数组将是 {1, 0, 0, 0, 0, 0, 0, 0}
- 2 天后,数组将是 {0, 1, 0, 0, 0, 0, 0, 0}
- 3 天后,数组将是 {1, 0, 1, 0, 0, 0, 0, 0}
所以 2 个活动单元格和 6 个非活动单元格
算法
activeCellKdays(arr, n, k)
begin
make a copy of arr into temp
for i in range 1 to k, do
temp[0] := 0 XOR arr[1]
temp[n-1] := 0 XOR arr[n-2]
for each cell i from 1 to n-2, do
temp[i] := arr[i-1] XOR arr[i+1]
done
copy temp to arr for next iteration
done
count number of 1s as active, and number of 0s as inactive, then return the values.
end示例
#includeusing namespace std; void activeCellKdays(bool arr[], int n, int k) { bool temp[n]; //temp is holding the copy of the arr for (int i=0; i 相关文章
C++的std::call_once是什么_C++11保证函数在多线程中只被调用一次的方法
C++指针太难怎么办_C++指针与引用的核心区别及使用场景分析
C++的CRTP与虚函数有何异同_C++静态多态与动态多态的设计权衡
c++静态多态和动态多态 c++两种多态实现对比【详解】
c++ std::stringstream有什么用 c++内存字符串流【技巧】
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn










