码迷,mamicode.com
首页 > 编程语言 > 详细

算法(第4版)-1.1 练习(部分)

时间:2016-10-15 22:36:14      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

1.1.3

命令行的取参方法:

1.StdIn.readInt():  java XX,运行,输入参数,以空格或换行隔开;

2.Integer.parseInt(args[0]):  java XX 参数,以空格隔开,运行。

 

1.1.6

for (int i = 0; i <= 15; i++) {
    StdOut.println(f);
    f = f + g;
    g = f - g;
}

注意,当运行到g = f - g;这一行时,f已改变。

 

1.1.8

System.out.println(‘b‘ + ‘c‘);

答案:197

“”表示String,‘’表示char。

 

1.1.15

// https://github.com/aistrate/AlgorithmsSedgewick
public static int[] histogram(int[] a, int M)
{
    int[] h = new int[M];
    int N = a.length;
    
    for (int i = 0; i < N; i++)
        if (a[i] < M)
            h[a[i]]++;

    return h;
}

理解题意,巧妙解决,不必写双重循环。

 

1.1.19 *

// https://github.com/aistrate/AlgorithmsSedgewick
public static long Fib(int N)
{
    long[] f = new long[N+1];
    return Fib(N, f);
}

public static long Fib(int N, long[] f)
{
    if (f[N] == 0)
    {
        if (N == 1)
            f[N] = 1;
        else if (N > 1)
            f[N] = Fib(N-1, f) + Fib(N-2, f);
    }
    
    return f[N];
}

用数组保存已经计算过的值,更好地实现F(N)。

实测证明,原方法几分钟才输出到40多,且后面越来越慢(根据题意1小时都不能全部输出),改进后的方法几乎是秒输出。性能差异巨大。

算法(第4版)-1.1 练习(部分)

标签:

原文地址:http://www.cnblogs.com/iguure/p/5965367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!