我有一个位数组。位将根据以下标准切换和打开: 1.如果位左侧和右侧的位打开,则该位为1,否则为零。 2.边界条件(最左边和最右边的位将只用以下标准依赖于一个比特。即,或者左的它或它的右边。更改数组中的位
此阵列将被处理m次。
我写的下面的代码中,A是原始数组,subsiquent是处理数组,但是这会给我O(nm),其中n是长度,m是我想要执行该过程的次数。这样我就可以减少我的复杂性了。
for(int k = 0;k < m;k++){
for(int l = 0;l < n;k++){
if(l == 0){
if(A[l+1]==1)
subsiquent[l]=1;
else
subsiquent[l]=0;
//** is there a } missing here?
else if(l==n){
if(A[l-1]==1)
subsiquent[l]=1;
else
subsiquent[l]=0;
} else {
if(A[l+1]==1 && A[l-1]==1){
subsiquent[l]=1;
}else{
subsiquent[l]=0;
}
}
//** or is there a } missing here?
}
A = subsiquent;
}
要扫描'N'位'M'次?我怀疑O(n * m)以下的复杂度可能会显着降低。 – Thomas
所以你建议没有其他解决方案可以切换。除了扫描m次之外,不能做任何事情来进行切换吗?谢谢 –
@ketananand你为什么要扫描m次? –