我有一個位數組。位將根據以下標準切換和打開: 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次? –