『壹』 演算法正確的程序對於相同的輸入一定有相同的結果,為什麼正確
該說法不正確,如果演算法中包含了隨機步驟,每次運行的結果不一定相同
『貳』 C++演算法問題「M個相同蘋果放進N個相同盒子,Return S 方法值」
你先假設盒子放蘋果的放置方法是有序的。。。。
後一個盒子比前一個盒子放的多。。。
i個蘋果放j個盒子
那麼f[i][j]=f[i-j][j]+f[i][j-1];
這個是遞推式,注意邊界條件即可。。。
『叄』 求演算法問題: 一個數組a中有n個整數,如何設計演算法,使其中相同的數只有一個。並給出程序。
對數組進行排序,然後將相鄰的如果相等的去掉就可以了
int m=0;
for(i=1;i<n;i++)
{
if(a[i] != a[m])
a[++m]=a[i];
}
m++;
排序可以調用庫函數
c++ sort(a,a+n);
c qsort
『肆』 相同演算法如何寫出不同程序
相同演算法通過不同的編寫語言可以做出不同的程序。演算法是解決問題的步驟,只是一個思路,程序是演算法的代碼實現,為實現相同的一個演算法,用不同語言編寫的程序會不一樣。
『伍』 設求解同一問題有四種演算法,這四種演算法各自的時間復雜度分別為O(n^2), O(nlogn), O(2^n),O(n),
常用的時間復雜度所耗費的時間從小到大依次是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2^n)<O(n! )<O(n^n)
『陸』 求例子:隨問題實例規模增大,同一演算法的求解時間可能波動甚至下降
在分解質因數的演算法中會有這種情況:
當數值為2^n時,求解時間會下降
『柒』 時間復雜度相同的演算法一樣好嗎
如果只分析你上面段程度,顯然方法二做了許多無用功,當然一好。
時間復雜度估的是個時間隨規模n增長的趨勢,他倆的趨勢是一樣的。給定規模n,如果方法二能跑,那方法一肯定能跑,只不過比前者多常數倍時間而已,你跑1秒,我不過跑2秒而已,你跑一天,我跑倆天而已,你要跑一年以上,那勸你還是找個更快的演算法吧,從這個角度理解,它倆是一樣的。由於是常數倍的,不會隨著n增長而增長,所以可以說和方法二一樣。另外演算法的實現還帶著常系數,O(n)啥的都把系數略掉了,之所以略掉,是因為它不隨著n的增長而改變,相同時間復雜度的演算法之間,實現時間本身就差著常數倍。
『捌』 對於同一個問題可採用不同的演算法去解決,但不同的演算法通常具有相同的效率這句話錯在哪 急!
不同的演算法不會有相同的效率。
就比如11x12=132
第一種演算法,兩邊一拉中間相加。像左1 右2 中間1+2=3
再舉個例子11x55 605
第二種演算法,歸整零相加。像10x12+12
『玖』 同一個問題演算法不同,結果必不同
一個演算法最多可以包含三種邏輯結構的任意組合,故A不正確;
同一問題的演算法不同,結果必然相同,故B不對;
演算法既能用圖形方式來表示,也能用自然語言來表示,故C不正確;
一個演算法可以含有上述三種邏輯結構的任意組合,故D正確.
故選D.
『拾』 排序演算法中對於同一個問題若有一個演算法是穩定的另一個演算法是不穩定的,哪一個
這演算法的一個結果都算是穩定的,一個標准都是非常好的基本面