實驗1 算法基礎實驗
OJ練習
1. 計算球體積:http://acm.hdu.edu.cn/showproblem.php?pid=2002
2. 成績轉換:http://acm.hdu.edu.cn/showproblem.php?pid=2004
3. 求奇數的乘積:http://acm.hdu.edu.cn/showproblem.php?pid=2006
4. 平方和與立方和:http://acm.hdu.edu.cn/showproblem.php?pid=2007
5. 水仙花數:http://acm.hdu.edu.cn/showproblem.php?pid=2010
6. 母牛的故事:http://acm.hdu.edu.cn/showproblem.php?pid=2018
7*. LELE的RPG難題:http://acm.hdu.edu.cn/showproblem.php?pid=2045
8*. 考新郎:http://acm.hdu.edu.cn/showproblem.php?pid=2049
9*. 詭異的樓梯:http://acm.hdu.edu.cn/showproblem.php?pid=1180
10*. 變形課:http://acm.hdu.edu.cn/showproblem.php?pid=1181
實驗內容
1. 百元百雞問題。每隻母雞3元,每隻公雞4元,每隻小雞0.5元,如果花100元錢買100只雞,請問有哪些可能?試編程輸出所有的組合。【注:每種雞的數量都可以爲零】
源代碼:
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
int a,b,c;
for(int i=0; i<=100; i++) {
for(int j=0; i+j<=100; j++) {
int k = 100 - i - j;
if(3*i + 4*j + 0.5*k == 100) {
System.out.printf("%d %d %d\n",i,j,k);
}
}
}
}
}
6 10 84
13 5 82
20 0 80
2. 使用遞歸編寫一個程序,求以下數列的前n項之和:
源代碼:
import java.util.Scanner;
public class Main{
static double f(int n) {
if(n==1) {
return 1.0;
}else{
if(n%2==0) {
return -1.0/n+f(n-1);
}
else {
return 1.0/n+f(n-1);
}
}
}
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
while(cin.hasNext()) {
int n = cin.nextInt();
System.out.println(f(n));
}
}
}
當n=10時,結果爲 0.6456349206349207 。
當n=15時,結果爲 0.7253718503718505 。
3. 有一只經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請編程計算蜜蜂從蜂房a爬到蜂房b的可能路線數。
其中,蜂房的結構如下所示。
輸入整數a和b表示起點和終點,輸出a到b可能的線路數。例如:輸入1和2,輸出1;輸入3和6,輸出3。
提示:尋找規律,使用遞歸實現。
源代碼:
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
long[] a = new long[100];
a[0]=0;
a[1]=1;
a[2]=2;
for(int i=3; i<=50; i++) {
a[i] = a[i-1] + a[i-2];
}
int n = cin.nextInt();
while(n-- != 0 ) {
int s = cin.nextInt();
int e = cin.nextInt();
System.out.println(a[e-s]);
}
}
}
說明:
(1) 編程語言不限,建議使用Java、C++或者C語言。
(2) 需要將程序源代碼複製並粘貼到每道題之後的方框中(部分題需要填寫輸出結果)。
(3) 在提交實驗報告時,先關閉所有文件,再將文件名改爲“學號-姓名-算法分析與設計實驗1.doc”;將實驗報告在指定時間之前由學習委員收集整理後統一發送至郵箱[email protected]。