欢迎交流

  1.1.1

  a. 7

  b. 200.0000002

  c. true

  1.1.2

  a. 1.618

  b. 10.0

  c. true

  d. 33

  1.1.3

 public class MainApp {
public static void main(String[] args) { int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]); if(a == b && b == c) {
System.out.println("equal");
} else {
System.out.println("not equal");
}
}
}

   1.1.4

  a. 去掉"then"

  b. a > b 外围加括号

  c. 正确

  d. else 之前加冒号

  1.1.5

public class MainApp {
public static void main(String[] args) { Double a = Double.parseDouble(args[0]);
Double b = Double.parseDouble(args[1]); if(a >= 0 && a <= 1 && b >=0 && b <= 1) {
System.out.println("true");
} else {
System.out.println("false");
}
}
}

  1.1.6

  斐波那契数列

0 -> 1 -> 1 -> 2 -> 3 -> 5 -> 8 -> 13 -> 21 -> 34 -> 55 -> 89 -> 144 -> 233 -> 377 -> 610

1.1.7

  a. 3.00009

  b. 499500

  c. 10000

  1.1.8

  a. b

  b. bc

  c. e

  1.1.9

 int N = ;
String s = "";
for(int i = N; i > ; i /= ) {
s = i % + s;
}

  1.1.10

  数组没有初始化

  1.1.11

public class TestApp1 {
public static void main(String[] args) { int N = 10;
boolean ma[][] = new boolean[N][N]; for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
double r = Math.random();
if(r < 0.5)
ma[i][j] = true;
else
ma[i][j] = false;
}
} for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
if(ma[i][j] == true)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
}

  1.1.12

  0 1 2 3 4 4 3 2 1 0

  1.1.13 

public class TestApp1 {
public static void main(String[] args) { int N = 10;
int M = 15;
boolean ma[][] = new boolean[N][M]; for(int i = 0; i < N; i++) {
for(int j = 0; j < M; j++) {
double r = Math.random();
if(r < 0.5)
ma[i][j] = true;
else
ma[i][j] = false;
}
} System.out.println("origin matrix:");
for(int i = 0; i < N; i++) {
for(int j = 0; j < M; j++) {
if(ma[i][j] == true)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
} System.out.println("transposition matrix:");
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
if(ma[j][i] == true)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
}

  1.1.14

public class TestApp1 {
public static void main(String[] args) { System.out.println(lg(15));
System.out.println(lg(16));
System.out.println(lg(17));
} private static int lg(int N) { int result = 1;
while(result <= N) {
result *= 2;
} return result / 2;
}
}

  1.1.15

public class TestApp1 {
public static void main(String[] args) {
int A[] = {1, 2, 3, 3, 2, 5, 5, 4};
int N = 8;
int M[] = histogram(A, N);
for(int m : M) {
System.out.println(m);
}
} private static int[] histogram(int[] A, int N) {
int[] M = new int[N];
for(int i = 0; i < N; i++) {
M[A[i]]++;
}
return M;
}
}

  1.1.16

  311461142246

  1.1.17

  由于一直会递归调用,所以不会停止,直到栈溢出。

  1.1.18

  修改前:

  mystery(2, 25) = 50

  mystery(3, 11) = 33

  修改后:

  mystery(2, 25) = 33554432

  mystery(3, 11) = 177147

  1.1.19

public class TestApp1 {

    private static long[] list = new long[1000];

    public static void main(String[] args) {
F(1000);
for(int i = 0; i < list.length; i++) {
if(i > 0 && list[i] == 0) {
break;
}
StdOut.println(i + " " + list[i]);
}
} public static void F(int N) {
list[0] = 0;
list[1] = 1;
for(int i = 2; i < N; i++) {
list[i] = list[i - 1] + list[i - 2];
if(list[i] < list[i - 1]) {
list[i] = 0;
System.out.println("MAX : " + list[i - 1]);
break;
}
}
}
}

  最大值为 7540113804746346429

  1.1.20

public class TestApp1 {

    public static void main(String[] args) {
for(int i = 1; i <= 10; i++) {
System.out.println("log_fact(" + i + "): " + log_fact(i));
}
} private static double log_fact(int n) {
if(n == 1)
return 0;
else
return log_fact(n - 1) + Math.log(n);
}
}

  1.1.21

import java.util.ArrayList;
import java.util.List; public class TestApp1 { public static void main(String[] args) { List<Info> list = new ArrayList<Info>();
String line; while(StdIn.hasNextLine()) {
line = StdIn.readLine();
if(line.isEmpty()) {
break;
}
String[] content = line.split(" ");
Info info = new Info(content[0], Integer.parseInt(content[1]), Integer.parseInt(content[2]));
list.add(info);
} for(Info info : list) {
StdOut.println(info);
}
}
} class Info {
private String name;
private int x;
private int y; public Info(String name, int x, int y) {
this.name = name;
this.x = x;
this.y = y;
} public String toString(){
return "1: " + name + "2: " + x + "3: " + y + "4: " + x * 1.0 / y;
}
}

  1.1.22

import java.util.ArrayList;
import java.util.List; public class TestApp1 { public static void main(String[] args) {
rank(3, new int[]{1, 3, 5, 6, 8, 11, 25, 78, 345, 7653});
} private static int rank(int key, int[] a) {
return rank(key, a, 0, a.length - 1, 0);
} private static int rank(int key, int[] a, int lo, int hi, int depth) {
if(lo > hi)
return -1;
int mid = (lo + hi) / 2;
int loop = depth;
while(loop != 0) {
System.out.print(" ");
loop--;
}
System.out.println("lo:" + lo + " hi:" + hi);
if(key < a[mid])
return rank(key, a, lo, mid - 1, ++depth);
else if(key > a[mid])
return rank(key, a, mid + 1, hi, ++depth);
else
return mid;
}
}

  1.1.23

import java.util.ArrayList;
import java.util.Arrays; public class BinarySearch { private BinarySearch(){} public static int rank(int key, int[] a) {
int lo = ;
int hi = a.length - ;
while(lo <= hi) {
int mid = (lo + hi) / ;
if(key < a[mid])
hi = mid - ;
if(key > a[mid])
lo = mid + ;
else
return mid;
}
return -;
} public static void main(String[] args) {
In in = new In(args[]);
int[] whitelist = in.readAllInts();
Arrays.sort(whitelist);
String flag = args[]; if("+".equals(flag)) {
while(!StdIn.isEmpty()) {
int key = StdIn.readInt();
if(rank(key, whitelist) == -) {
StdOut.println(key);
}
}
}else if("-".equals(flag)) {
while (!StdIn.isEmpty()) {
int key = StdIn.readInt();
if(rank(key, whitelist) != -) {
StdOut.println(key);
}
}
} else {
StdOut.println("Error Flag");
} }
}

  1.1.24

public class GCD {

    public static void main(String[] args) {
StdOut.println(gcd(105, 24));
} public static int gcd(int a, int b) {
StdOut.println("a: " + a + " b: " + b);
if(b == 0)
return a;
else
return gcd(b, a % b);
}
}

   1.1.25

设两数为a、b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a mod b 为a除以b以后的余数,k为a除以b的商,即a÷b=k.......r。辗转相除法即是要证明gcd(a,b)=gcd(b,r)。
第一步:令c=gcd(a,b),则设a=mc,b=nc
第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c
第三步:根据第二步结果可知c也是r的因数
第四步:可以断定m-kn与n互质【否则,可设m-kn=xd,n=yd,(d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)dc,b=nc=ycd,故a与b最大公约数成为cd,而非c,与前面结论矛盾】
从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。
证毕。

Algorithms 4th - 1.1 Basic Programming Model - EXERCISES的更多相关文章

  1. Algorithms 4th - 1.1 Basic Programming Model - CREATIVE PROBLEMS

    欢迎交流 1.1.26 public class TestApp { public static void main(String[] args) { int a = StdIn.readInt(); ...

  2. 1.1 BASIC PROGRAMMING MODEL(算法 Algorithms 第4版)

    1.1.1 private static void exercise111() { StdOut.println("1.1.1:"); StdOut.println((0+15)/ ...

  3. HttpWebRequest - Asynchronous Programming Model/Task.Factory.FromAsyc

    Posted by Shiv Kumar on 23rd February, 2011 The Asynchronous Programming Model (or APM) has been aro ...

  4. PatentTips - Heterogeneous Parallel Primitives Programming Model

    BACKGROUND 1. Field of the Invention The present invention relates generally to a programming model ...

  5. 《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅳ

    3.1.4 无序链表中的顺序查找 符号表中使用的数据结构的一个简单选择是链表,每个结点存储一个键值对,如以下代码所示.get()的实现即为遍历链表,用equals()方法比较需被查找的键和每个节点中的 ...

  6. 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅶ(延伸:堆排序的实现)

    2.4.5 堆排序 我们可以把任意优先队列变成一种排序方法.将所有元素插入一个查找最小元素的有限队列,然后再重复调用删除最小元素的操作来将他们按顺序删去.用无序数组实现的优先队列这么做相当于进行一次插 ...

  7. 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅵ

    · 学后心得体会与部分习题实现 心得体会: 曾经只是了解了优先队列的基本性质,并会调用C++ STL库中的priority_queue以及 java.util.PriorityQueue<E&g ...

  8. 《Algorithms 4th Edition》读书笔记——2.4 优先队列(priority queue)-Ⅴ

    命题Q.对于一个含有N个元素的基于堆叠优先队列,插入元素操作只需要不超过(lgN + 1)次比较,删除最大元素的操作需要不超过2lgN次比较. 证明.由命题P可知,两种操作都需要在根节点和堆底之间移动 ...

  9. Udacity并行计算课程笔记-The GPU Programming Model

    一.传统的提高计算速度的方法 faster clocks (设置更快的时钟) more work over per clock cycle(每个时钟周期做更多的工作) more processors( ...

随机推荐

  1. TimeSpan类【转】

    TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //获取当前时间的刻度数 //执行某操作 ............................ . ...

  2. Java Swing界面编程(27)---JRadioButton事件处理

    在单选button操作中.能够使用ItemListener接口进行事件的监听. package com.beyole.util; import java.awt.Container; import j ...

  3. L9-2.安装mysql数据库

    二.安装mysql 1.检查是否安装了mysql 2.安装cmake 输入gmake: make install 安装依赖的软件包: 新建用户权限等: 解压 安装 安装: 安装成功. 安装后调整: v ...

  4. property参数

      1,set方法内存管理相关的参数 *retain:release旧值,retain新值(适用于OC对象类型) *assign:直接赋值(默认,只用于非OC对象类型) *copy: release旧 ...

  5. 【.Net】文件并发(日志处理)--队列--Redis+Log4Net

    多线程操作同一个文件时会出现并发问题.解决的一个办法就是给文件加锁(lock),但是这样的话,一个线程操作文件时,其它的都得等待,这样的话性能非常差.另外一个解决方案,就是先将数据放在队列中,然后开启 ...

  6. Vim 扩展工具 vim-ide (转)

    通过简单的配置文件将 vim 打造成专业 ide,支持 mac linux cygwin.看过数篇 vim 配置文件,必要时去定制vim 的插件,将 vim 的 ide 用户体验尽量做到极致. 使用范 ...

  7. VC++客户端 缩小包的尺寸

    图片压缩: 1. 背景图片尺寸一般为100-300KB,使用纯色图片可缩小至1-3KB,方法得当可缩小1M多: 2. .ico一般为100-200KB,16x16一直到256x256,可减去其中几种尺 ...

  8. apt-get命令学习

    在windows下安装软件,我们只需要有EXE文件,然后双击,下一步直接OK就可以了.但在LINUX下,不是这样的.每个LINUX的发行版,比如UBUNTU,都会维护一个自己的软件仓库,我们常用的几乎 ...

  9. Mindjet 一打开鼠标就动不了解决方法

    在网上查找了一下相关资料,这个主要是Mindjet不支持64位系统造成的,其实就和Windows tablet pc input 这个服务相冲突造成的,临时的解决方法是,win+r (别告诉我你不知道 ...

  10. wetask.cn领度任务全新试用体验

    管理一个公司或者团队,最困难的事情莫过于追踪大家的工作状况,往往是任务分配下去了,无法及时掌握进度.做绩效评估时候仅凭主观判断,无法清晰掌握团队的工作成绩和工作效率.团队日报.周报各种报表繁多,也是事 ...