問題提出時,想要利用計算機進行求解,而一般計算機不會分析問題並直接給出解決問題的方案,故我們個人需要分析問題並給出問題的解決方案,再將其描述成計算機能識別的指令(程式),讓計算機進行複雜處理,最終得到問題結果,在這一過程中,計算機確起著非常重要的作用,但是要是沒有前面的一系列步驟,也不能解決問題
程式設計的一般過程如圖所示
由問題到想法的過程,需要分析待處理的資料以及資料之間的關係,抽象出資料型別,形成基本解題思路。對於數值型問題抽象出來的資料模型一般是數學方程,而非數值型別的問題抽象出來的資料模型一般是表、樹、圖等資料結構
由想法到演算法的過程,需要將人的想法描述成演算法(設計演算法),即從計算機的角度去思考其是如何一步一步完成任務的,需要考慮資料在計算機上是如何表示(儲存)和處理的,將資料模型從機外表示轉化為機內表示,描述問題求解的基本思路,將問題的解決想法描述成演算法
由演算法到程式的過程,需要根據程式語言語法,在計算機中對資料進行處理
程式=資料結構+演算法(將問題抽象出乙個適當的資料結構,然後基於資料結構設計乙個好演算法)
以七橋問題為例來說明
哥尼斯堡,城中有一座島,有兩條支流繞其旁,並將整個城市分為北區、東區、南區和島區4個區域,全城共有七座橋將四個城區連線起來,如圖所示,有個人提出乙個問題:乙個步行者怎樣才能不重複、不遺漏地一次走完七座橋,最後回到出發點
00想法:如圖所示,將城區抽象為頂點,用a,b,c,d表示4個城區,將橋抽象為邊,用7條邊表示7座橋,抽象出七橋問題的資料模型如圖4所示,從而將七橋問題抽象為乙個數學問題:球經過圖中每一條邊一次且僅一次的迴路,後來人們稱之為尤拉迴路。尤拉迴路判定規則是,:
(1)如果沒有乙個城區通奇數橋,則無論從**出發都能找到尤拉迴路
(2)如果通奇數橋的城區多於兩個,則不存在尤拉迴路
(3)如果只有兩個城區通奇數橋,則不存在尤拉迴路,但可以從這兩個城區之一出發準哦到尤拉路徑
演算法:將頂點a、b、c、d編號為0,1,2,3,用二維陣列array[4][4]儲存七橋問題的資料模型,如果將頂點i(0<=i<=3),和頂點j(0<=j<=3)之間有k條邊,則元素array[i][j]的值為k,如圖所示,求解七橋問題的關鍵是求與每個頂點的相關聯的邊數,即是在二維陣列array[4][4]中求每一行元素之和,演算法如下:
演算法:eulercircuit
輸入:二維陣列array[4][4]
輸出:通奇數橋的頂點個數count
1.count初始化為0;
2.下標i從0~n-1重複執行下述操作:
2.1 計算第i行元素之和degree
2.2 如果degree為奇數,則count++;
3.返回count ;
程式:#include
int eulercircuit(int array[4][4],int n) ;//函式宣告,求通奇數橋的頂點個數
int main() ;
int num = eulercircuit(arrary,4);
if(num>=2){
printf("有%d個地方通奇數橋,不存在尤拉迴路\n",num);
else
printf("存在尤拉迴路\n");
return 0;
int eulercircuit(int array[4][4],int n){
int i,j,degree,count = 0 ;
for(i = 0 ;i < n ; i++ ){
degree = 0 ;
for(j = 0 ; j < n ; j++){
degree=degree+array[i][j];
if(degree%2!=0)
count++;
return count ;
程式設計開發求解吊燈問題
description alice家裡有一盞很大的吊燈。所謂吊燈,就是由很多個燈泡組成。只有乙個燈泡是掛在天花板上的,剩下的燈泡都是掛在其他的燈泡上的。也就是說,整個吊燈實際上類似於一棵樹。其中編號為1的燈泡是掛在天花板上的,剩下的燈泡都是掛在編號小於自己的燈泡上的。現在,alice想要辦一場派對,...
問題求解與程式設計 實驗二 G 大數A B
描述 大家都做個好多a b系列的題目,今天來點新鮮的a b題目。輸入 輸入有多組。每一組資料佔一行。每行有兩個整數,中間用空格隔開。其中整數範圍為 0,10 100 輸出 每組輸出佔一行。具體格式見樣例。樣例輸入11 2 112233445566778899 998877665544332211 樣...
問題求解與程式設計 實驗四 C食堂排隊
描述 某日,食堂視窗推出一款新美食,每個班的同學都想去嚐一嚐。於是,很多人都去這個視窗排隊,但是,隊伍中如果同班同學相鄰站著的話,他們就只需要乙個人排在隊伍中就行了。例如某次隊伍情況 12221133345678899,那麼就會變成一條新的隊伍 1213456789。輸入 輸入有多組資料,對於每組資...