演算法寫出來
『壹』 大家幫幫忙啊!算出來,吧演算法寫一下啊!
第一步:21÷3=7算出一個戴博士帽的小熊等於7。第二步:19-7÷2=6算出一輛載著沒帶博士帽小熊的車等於6.第三步:15-6-7=2算出一個博士帽等於2.最後一步很關鍵,坑在最後一步,第一個小熊沒帶博士帽也就是7-2=5,兩個博士帽2+2=4,最後一輛車里沒有小熊用6-5=1.最後答案是5+4×1=9.完美收官
『貳』 如何寫一個演算法
演算法是在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程序,都是在實施某種演算法。前者是推理實現的演算法,後者是操作實現的演算法。 一個演算法應該具有以下五個重要的特徵: 1、有窮性: 一個演算法必須保證執行有限步之後結束; 2、確切性: 演算法的每一步驟必須有確切的定義; 3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件; 4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的; 5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。 當遇到一個演算法問題時,首先要知道自己以前有沒有處理過這種問題.如果見過,那麼你一般會順利地做出來;如果沒見過,那麼考慮以下問題: 當遇到一個演算法問題時,首先要知道自己以前有沒有處理過這種問題.如果見過,那麼你一般會順利地做出來;如果沒見過,那麼考慮以下問題: 1. 問題是否是建立在某種已知的熟悉的數據結構(例如,二*樹)上?如果不是,則要自己設計數據結構。 2. 問題所要求編寫的演算法屬於以下哪種類型?(建立數據結構,修改數據結構,遍歷,查找,排序...)3. 分析問題所要求編寫的演算法的數學性質.是否具備遞歸特徵?(對於遞歸程序設計,只要設計出合理的參數表以及遞歸結束的條件,則基本上大功告成.)4. 繼續分析問題的數學本質.根據你以前的編程經驗,設想一種可能是可行的解決辦法,並證明這種解決辦法的正確性.如果題目對演算法有時空方面的要求,證明你的設想滿足其要求.一般的,時間效率和空間效率難以兼得.有時必須通過建立輔助存儲的方法來節省時間.5. 通過一段時間的分析,你對解決這個問題已經有了自己的一些思路.或者說,你已經可以用自然語言把你的演算法簡單描述出來.繼續驗證其正確性,努力發現其中的錯誤並找出解決辦法.在必要的時候(發現了無法解決的矛盾),推翻自己的思路,從頭開始構思.6. 確認你的思路可行以後,開始編寫程序.在編寫代碼的過程中,盡可能把各種問題考慮得詳細,周密.程序應該具有良好的結構,並且在關鍵的地方配有注釋.7. 舉一個例子,然後在紙上用筆執行你的程序,進一步驗證其正確性.當遇到與你的設想不符的情況時,分析問題產生的原因是編程方面的問題還是演算法思想本身有問題. 8. 如果程序通過了上述正確性驗證,那麼在將其進一步優化或簡化。 9. 撰寫思路分析,注釋. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------看不懂,還是不明白,有誰清楚告訴我啊,
『叄』 請問這是用哪種演算法寫出來的
用的是遞歸演算法。
在計算機科學中是指一種通過重復將問題分解為同類的子問題而解決問題的方法。遞歸式方法可以被用於解決很多的計算機科學問題,因此它是計算機科學中十分重要的一個概念。
『肆』 請寫一個折半插入排序演算法(最好用C語言寫出來,只要求寫一個函數)
/***折半插入排序***/
/*演算法原理:從第二個數開始逐個置入監視哨,使用low,high標簽在L[0..i-1]有序區內進行折半查找
來確認待排序數的插入位置,然後將該位置到最後一個數全部後移一位,最後騰出該位置,
把監視哨裡面的數置入該位置。後面的數以此類推進行排序,直到最後一個數比較完畢。
*/
#include<stdio.h>
voidbinaryInsertSort(intL[],intn)
{
inti,j;
intlow,high,mid;
//用L[0]作為監視哨,L[1..i-1]為有序區,
for(i=2;i<=n;i++)
{
L[0]=L[i]; //待排序的數進監視哨
low=1;
high=i-1; //初始化low,high
while(low<=high)//循環語句確定插入位置,必須保證low<=high
{
mid=(low+high)/2;
if(L[0]<L[mid])//根據L[0]的值的大小,確定屬於低半區還是高半區
high=mid-1;//插入低半區//插入低半區
else
low=mid+1;//插入高半區
}
for(j=i-1;j>=high+1;j--)//待插入位置後面L[hign+1..i-1]全部數後移一位
L[j+1]=L[j];
L[high+1]=L[0]; //或者換成L[j+1]=L[0];監視哨裡面的數插入數組
}
}
voidbinaryInsertSort1(intL[],intn)
{
inti,j;
intlow,high,mid,tmp;
//用臨時變數tmp作為監視哨,L[0..i-1]為有序區
for(i=1;i<n;i++)
{
tmp=L[i];
low=0;
high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if(tmp<L[mid])
high=mid-1;
else
low=mid+1;
}
for(j=i-1;j>=high+1;j--)
L[j+1]=L[j];
L[high+1]=tmp;
}
}
intmain()
{
inti,n;
inta[50];
printf("輸入n=");
scanf("%d",&n);
printf("輸入數組元素: ");
// for(i=1;i<=n;i++)
for(i=0;i<n;i++)
scanf("%d",&a[i]);
// binaryInsertSort(a,n);
binaryInsertSort1(a,n-1);
printf("排序後; ");
// for(i=1;i<=n;i++)
for(i=0;i<n;i++)
printf("%-4d",a[i]);
putchar(10);
return0;
}
『伍』 演算法怎麼寫
演算法的流程書寫可通過流程圖或偽代碼來完成。
所謂流程圖是指以特定的圖形符號加上說讓譽明,表示演算法的圖,用它來表示演算法思路是一種極燃滑蘆好的方法,因為有時候千言萬語不如一張圖形象生動易於理解,例如:
而偽代碼是介於自然語言和計算機語言之間的文字和符號(包括數學符號),它是一種不依賴於語言、用來表示程序執行過程、而不一定能皮帶編譯運行的代碼,例如:
Begin(演算法開始)
輸入 A,B,C
IF A>B 則 A→Max
否則 B→Max
IF C>Max 則 C→Max
Print Max
End (演算法結束)