Java经典算法大全

else {

System.out.println(\

截取从右端开始的4~7位是:

\ } }

【程序33】

* 作者 若水飞天

题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 */

/*

* 网上千篇一律是这种写法,我也没有什么创新,

* a[i][j]=a[i-1][j]+a[i-1][j-1] 就是这个程序的核心

* 定义的是二维数组,为了使输出的结果看起来漂亮一点

* 可以用for(int k=0; k<2*(10-i)-1; k++)控制输出的空格 * 这个循环是在控制行数的循环里面,控制列数的循环外面。 * 记得在输出菱形时为了控制下半部分的输出,在下拼命的写出 * for(int k=1; k<=WIDTH-2*i-1; k++) 才算了事。 */

package cn.com.flywater.FiftyAlgorthm; public class Thirty_thirdYangTriangle { public static void main(String[] args) {

int[][] a = new int[10][10]; for(int i=0; i<10; i++) { a[i][i] = 1; a[i][0] = 1; }

for(int i=2; i<10; i++) { for(int j=1; j

a[i][j] = a[i-1][j-1] + a[i-1][j]; } }

for(int i=0; i<10; i++) {

for(int k=0; k<2*(10-i)-1; k++) { System.out.print(\ }

26

for(int j=0; j<=i; j++) {

System.out.print(a[i][j] + \ \ }

System.out.println(); } }

}

/*【程序34】

* 作者 若水飞天

题目:输入3个数a,b,c,按大小顺序输出。 1.程序分析:利用指针方法。 */

/*

* 可惜,Java好像没有指针

*/

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;

public class Thirty_forthCompare {

public static void main(String[] args) { Scanner s = new Scanner(System.in); int a = s.nextInt(); int b = s.nextInt(); int c = s.nextInt();

if(a < b) { int t = a; a = b; b = t; }

if(a < c) { int t = a; a = c; c = t; }

if(b < c) { int t = b; b = c; c = t; }

System.out.println(\从大到小的顺序输出:\ System.out.println(a + \

27

}

}

/*【程序35】 * 作者 若水飞天

题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 **/

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner; public class Thirty_fifthSwop {

static final int N = 8;

public static void main(String[] args) {

int[] a = new int [N];

Scanner s = new Scanner(System.in); int index1 = 0, index2 = 0;

System.out.println(\ for(int i=0; i

System.out.print(a[i] + \ }

int max =a[0], min = a[0]; for(int i=0; i max) { max = a[i]; index1 = i; }

if(a[i] < min) { min = a[i]; index2 = i; } }

if(index1 != 0) { int temp = a[0]; a[0] = a[index1]; a[index1] = temp; }

if(index2 != a.length-1) { int temp = a[a.length-1]; a[a.length-1] = a[index2];

28

a[index2] = temp;

}

System.out.println(\ for(int i=0; i

}

/*【程序36】 * 作者 若水飞天

题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

**/ /*

* 这个题不知道有什么好办法,比较直接方法的是把这个数组分成两个数组, * 再将两个数组合起来,但如果不控制好数组的下标,就会带来很多麻烦。 */

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;

public class Thirty_sixthBackShift { public static final int N =10;

public static void main(String[] args) { int[] a = new int[N];

Scanner s = new Scanner(System.in);

System.out.println(\ for(int i=0; i

}

System.out.println(\ int m = s.nextInt();

int[] b = new int[m]; int[] c = new int[N-m]; for(int i=0; i

for(int i=m,j=0; i

for(int i=0; i

29

for(int i=m,j=0; i

for(int i=0; i

} }

/*【程序37】 * 作者 若水飞天

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 **/

/*

* 这个程序是完全抄别人的

*/

package cn.com.flywater.FiftyAlgorthm; import java.util.Scanner;

public class Thirty_sevenCount3Quit { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt();

boolean[] arr = new boolean[n];

for(int i=0; i

arr[i] = true;//下标为TRUE时说明还在圈里 }

int leftCount = n; int countNum = 0; int index = 0;

while(leftCount > 1) {

if(arr[index] == true) {//当在圈里时 countNum ++; //报数递加 if(countNum == 3) {//报道3时 countNum =0;//从零开始继续报数 arr[index] = false;//此人退出圈子 leftCount --;//剩余人数减一 }

}

index ++;//每报一次数,下标加一

30

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4