我真的不明白我如何使用此代碼的歸納證明。 我只是想知道如何證明這個代碼和算法的正確性。此代碼的數學歸納?
證明我們永遠不會計算已經計數的物品。
算法countCells(X,Y)
如果在所述小區(X,Y)是外
電網的結果是0;
否則如果
單元在(x,y)處的顏色不是異常顏色,則結果爲0;else
將單元格的顏色設置爲(x,y)爲臨時的 顏色;結果爲1加上包含最近鄰居的每個 斑點中的單元的數量;
public int countCells(int x, int y)
{
int result;
if(x<0 || x>=N || y<0 || y>=N) // N is the maximum value of the matrix
return 0;
else if(!getColor(x,y).equals(ABNORMAL)) //
return 0;
else
{
recolor(x, y, TEMPORARY);
return 1 + countCells(x-1, y+1) + countCells(x, y+1)
+ countCells(x+1, y+1) + countCells(x-1, y)
+ countCells(x+1, y) + countCells(x-1, y-1)
+ countCells(x, y-1) + countCells(x+1, y-1)
}
}
下面的鏈接顯示這是如何工作
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=104&docId=186514818
*證明正確性*?你可以指定countCells應該做什麼*正確的事情? – johnchen902
在我看來,這是一種洪水算法,它在'(x,y)'開始時計算異常顏色連接單元的數量。儘管如此,沒有什麼可證明的。 –
您並不能證明代碼的正確性,而是基於它的算法。那麼你的算法是否會計算blob中包含單元格的總元素? –