實驗1 算法基礎實驗

實驗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.72537185037185053. 有一只經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請編程計算蜜蜂從蜂房a爬到蜂房b的可能路線數。
其中,蜂房的結構如下所示。

    輸入整數a和b表示起點和終點,輸出a到b可能的線路數。例如:輸入12,輸出1;輸入36,輸出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]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章