迴圈與遞迴的應用
求2+22+222+2222+......+222222(n個2)精確計算
(1.迴圈演算法)
#include
#include
int main()
printf("%d",sum);
return 0;
}執行結果:
(2.遞迴演算法)
#include
int sum(int n)
else sum(n)=2;
}int main()
執行結果:
編寫乙個演算法,其功能是給一維陣列輸入任意6個整數,假設為5,7,4,8,9,1,然後建立乙個具有如圖所示的方陣,並列印出來。
5 7 4 8 9 1
1 5 7 4 8 9
9 1 5 7 4 8
8 9 1 5 7 4
4 8 9 1 5 7
7 4 8 9 1 5
#include
int main()
k=m;k--;m=k;
printf("\n");
}return 0;
}趣味矩陣一
程式設計列印如下的n*n方陣(兩種方法)
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
(方法一)
#include
int main()
if(n%2==1)
for(i=1;i<=n;i++)
return 0;
}方法2:
#include
int main()
k=k-1;
t=-t;
}for(i=1;i<=n;i=i+1)
return 0;
}程式設計列印如下所示的n*n方陣的上三角陣
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11#include
int main()
for(i=1;i<=n;i++)
return 0;
}趣味矩陣二
編寫程式列印形如圖所示的n*n方陣
1 1 1 1 1 1 1 1 1 1
2 2 2 2 1 1 2 2 2 2
2 3 3 2 1 1 2 3 2 1
2 3 3 2 1 1 2 3 2 1
2 2 2 2 1 1 2 2 2 2
1 1 1 1 1 1 1 1 1 1 1
#include
int main()
for(i=1;i<=n;i++)
return 0;
}優化演算法的基本技巧一
p115-12
有52張牌,使他們全部正面朝上,第一輪是從第2張開始,凡是2的倍數字置上的牌翻成正面嘲下;第二輪從第3張開始,凡是3的倍數字置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;第三輪從第4張牌開始,凡是4的倍數字置上的牌按上面相同規則翻轉,以此類推,直到翻得牌超過104張為止。統計最後有幾張牌正面朝上,以及他們的位置號。
#include
int main()
if(j>104)break;
}if(j>104)break;}}
j=0;
for(i=1;i<53;i++)
}printf("有%d張牌正面朝上",j);
}p115-(13)
a,b,c,d,e5人為某次競賽的前五名,他們在名次公布前猜名次。
a說:b得第三名,c得第五名。
b說:d得第二名,e得第四名。
c說:b得第一名,e得第四名。
d說:c得第一名,b得第二名。
e說:d得第二名,a得第三名。
結果每個人都猜對了一半,實際名次是什麼呢?
#include
int main()
}return 0;
}p116-(15)
兩個桌球隊進行比賽,各出3人.甲隊為a,b,c三人,乙隊為x,y,z,三人,已抽籤決定比賽名單。有人向隊員打聽比賽的名單,a說他不和x比,c說他不和x、z比,請編寫演算法找出3對賽手的名單?
#include
int main()
return 0;
}優化演算法基本技巧二
p115-(9)有乙隻經過訓練的蜂蜜只能爬向右側相鄰的蜂房,不能反向爬行。如圖,試求出蜜蜂從蜂房a爬到蜂房b的可能路線。(0
#include
int main()
;scanf("%d %d",&a,&b);
for(i=2;i<100;i++)
r[i]=r[i-1]+r[i-2];
printf("路線數字%d",r[b-a]);
return 0;
}p116-(14)編寫演算法求滿足以下條件的3位整數n:它是完全平方數,其中又有兩位數字相同,如144,676等。
#include
int main()
return 0;
}p116-(17)完成給「餘」猜數的遊戲:
心裡先想好乙個1~100之間的整數x,將它分別除以3,4和7並得到三個餘數,把這三個餘數輸入計算機,計算機能馬上猜出這個數。
please think of a number between 1 and 100
your number divided by 3 has a remainder of 1
your number divided by 4 has a remainder of 0
your number divided by 7 has a remainder of 5
let me think a moment...
your number was 40
分析:由演算法書中根據數學建模道理推出,d=28a+21b+36c;
其中,a的係數28是4和7的公倍數且被3整除餘1
b的係數21是3和7的公倍數,且被4整出餘1
c的係數36是3和4的公倍數,且被7整除餘1
**如下:
#include
int main()
迭代蠻力法的應用:
p185--(2)猴子吃桃子問題,猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了2個,第二天早上又將剩下的桃子吃了一半,又多吃了兩個,以後每天早上都吃了前一天剩下的一半零兩個,到第10天早上想在吃時,就只剩下兩個了。問第一天猴子摘下來多少個桃子?
#include
int main()
p126--(例題5)
一輛吉普車穿越1000千公尺的沙漠吉普車的**油量為500加倫,耗油率為1加倫/km。由於沙漠中沒有油庫,必須先用這輛車在沙漠中建立臨時油庫。若吉普車用最少的耗油量穿越沙漠,應在那些地方建立油庫,以及各處儲存的油量。
#include
int main()
while(dis<1000);
oil=500*(k-1)+(1000-dis)*(2*k-1);
printf("storepoint%ddistance%doilquantity%d",k,0,oil);
return 0;
}p186--(7)
有一堆棋子,兩枚兩枚的數,最後余一枚;3枚3枚的數,最後餘2枚;5枚5枚的數,最後餘4枚;6枚6枚的數,最後餘5枚;只有7枚7枚的數,最後正好數完,程式設計求出這堆棋子最少有多少枚棋子。
#include
int main()
printf("%d",j);
return 0;
}
演算法設計與分析習題
證明 令 f n o f 則存在自然數n1,c1,使得對任意的自然數n n1,有 f n c1f n 同理令 g n o g 則存在自然數n2,c2,使得對任意的自然數n n2,有 g n c2g n 令c3 max,n3 max,則對所有的n n3,有 f n c1f n c3f n g n c2...
演算法設計與分析課後習題3 2
題目 編寫乙個演算法,其功能是給一維陣列a輸入任意6個整數,假設為 5 7 4 8 9 1 然後建立乙個具有以下內容的方陣,並列印出來 螢幕輸出 5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7 7 4 8 9 1 5 設計思路 ...
演算法分析與設計 演算法及效率分析基礎(一)
1 演算法 解決問題的一種方法或乙個過程,是乙個由若干運 算或指令組成的有窮序列 2 演算法 問題 求解問題的演算法可以看作是輸入例項與輸出之間的函式 3 演算法的特點 input,output 輸入,輸出 deterministic 確定性 feasible 可行性 finite 有窮性 1 正確...