算法4笔记 Chapter 1
目前正在学习中,程序写的不是很对,有错的地方欢迎大家指正。
1.1.3 编写一个程序,从命令行得到三个整数参数。如果它们都相等则打印equal,否则打印not equal
public class isequal{
public static void main (String[] args){
int a = Integer.parseInt(arg[0 ]);
int b = Integer.parseInt(arg[1 ]);
int c = Integer.parseInt(arg[2 ]);
String caution = "equal" ;
if (a!=b){
caution = "Not equal" ;
}
if (b!=c){
caution = "Not equal" ;
}
}
}
1.1.5编写一段程序,如果double类型的变量x和y都严格位于0与1之间则打印true,否则打印false。
public class Randomequal{
public static double Randomequal (double x,double y){
if (x>0 &&x<1 &&y>9 &&y<1 ){
return 1.0 ;
}
else {
return -1.0 ;
}
}
public static void main (String[] args){
double x = StdIn.Random();
double y = StdIn.Random();
String caution = "true" ;
if (Randomqual(x,y)==1 ){
caution = "true" ;
}
else {
caution = "false" ;
}
StdOut.println(caution);
}
}
1.1.9编写一段代码,将一个正整数N用二进制表示并转换为一个String类型的值s。
public class BinaryString{
public static String BinaryString (String s){
String s = "" ;
int N = StdIn.readInt();
for (int i = N;N > 0 ;N /= 2 ){
s = (N % 2 ) + s;
}
return s;
}
}
public class BinaryString{
public static String Binary (int s){
if (s==0 ) return s;
else return Binary(s/2 );
System.Out.println("%d" ,s%2 );
}
}
1.1.13编写一段代码,将M行N列的矩阵转置。
public class Transform{
public static int [] Transform (int [][]a,int [][]b){
for (int i = 0 ;i < a.length;i++)
for (int j = 0 ;j<a.length;i++)
b[i][j] = a[j][i];
}
return b;
}
1.1.14编写一个静态方法lg(),接受一个整形参数N,返回不大于logN的最大整数。
public class math.log{
public static int lg (int N){
int a = 1 ;
int b = 0 ;
for (b;a <= N;b++)
a *= 2 ;
}
return b-1 ;
}
1.1.15 编写一个静态方法histogram(),接受一个整形数组a[]和一个整数M为参数并返回一个大小为M的数组,其中第i个元素的值为整数i在参数数组中出现的次数。如果a[]中值均在0到M之间,返回数组中所有元素纸盒应该和a.length相等。
public class Histogram{
public static int [] histogram (int [] a,M){
int c = 0 ;
int [] b = new int [M];
for (int i = 0 ;i < a.length; i++)
for (int j = 0 ;j<a.length; j++)
if (i==a[j]) c++;
b[j]=c;
return b;
}
}
1.1.20 编写一个递归的静态方法计算ln(N!)的值。
public class LnN{
public static int ln (int N){
if (N>1 ) return ln(N-1 );
else return N;
}
}