迴圈不定式可以用來證明乙個演算法的正確性:
比如我現在有乙個演算法a,我要證明它的正確性:步驟如下:
第0步:定義迴圈不定式;
第1步:證明迴圈不定式在演算法開始的時候是正確的;
第2步:證明迴圈不定式在演算法每次迭代(迴圈)的時候是正確的;
第3步:證明迴圈不定式在演算法結束時是正確的;
以下是用迴圈不定式來證明氣泡排序的正確性:
首先看**:
#includeint main()
for(int i = 0; i < len - 1; i++)
}} for(int i = 0; i <15; i++)
printf("\n");
return 0;
}
第0步:定義迴圈不定式data[len-1 - i] ~ data[len - 1] 是有序的;
第1步:在演算法開始前,i = 0;data[len -1 - i] ~ data[len-1] 是有序(這是很顯然的,因為乙個數一定是有序)的;
第2步:首先來看第二個迴圈,這個迴圈的作用是將data[0] ~ data[len - 1 - i]之間的最大數移動到dp[len - 1 - i];
我們來看第乙個迴圈,每次迴圈結束後data[len - 1 -i] 到data[len -1]都是有序的,因為第二個迴圈的的
作用就是將data[0] ~ data[len - 1 - i]之間的最大數移動到data[len - 1 - i]移動到data[len-1-i];
第3步:當演算法結束後,i = len - 1,data[len - 1 - i] 到 data[len - 1] 也就是data[0] ~ data[len - 1]是有序;
證畢不理解的借助紙和筆來模擬一下;
不定式方程求整數解(換分幣)
file name indefinite equation.c creat data 2015.1.23 author zy 不定式方程求整數解 換分幣 使用一元人民幣兌換成一分,兩分和五分的硬幣,共有多少種不同的兌換方法 include int main return 0 file name in...
不定式方程求整數解(愛因斯坦的數學題)
file name indefinite equation.c creat data 2015.1.23 author zy 不定式方程求整數解 愛因斯坦的數學題 愛因斯坦出了一道這樣的數學題,有一條長階梯,若每步 跨兩階,則剩最後一階,若每步跨三階,則最後剩兩階,若每步跨五階,則最後剩四階,若每步...
不定式方程求整數解(百錢百雞問題)(百馬百貨問題)
file name indefinite equation.c creat data 2015.1.23 author zy 不定式方程求整數解 百錢百雞問題 中國古代數學家張丘建在他的 算經 中提出了乙個著名的 百錢白雞問題 雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買白雞,問翁,母,雛...