java常见算法--小练习

练习1:有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个!
         以后每天猴子都吃当前剩下来的一半,然后再多吃一个,
          第10天的时候(还没吃),发现只剩下一个桃子了,请问:最初一共有多少个桃子?

public class Test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		/*
		 有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个!
		 以后每天猴子都吃当前剩下来的一半,然后再多吃一个,
		  第10天的时候(还没吃),发现只剩下一个桃子了,请问:最初一共有多少个桃子?
		  
		  day10:    1
		  day9:(day10+1)*2
		  day8:(day9+1)*2
		  
		  
		  1.出口
		  	day==10      剩下1
		  2.规律
		  	每一天的桃子数量都是前一天的数量加上1,乘以2
		  
		 */
		System.out.println(getCount(1));

	}
	public static int getCount(int day) {
		if(day<1 || day>11) {
			System.out.println("当前时间错误");
			return -1;
		}
		if(day==10) {
			return 1;
		}else {
			return (getCount(day+1)+1)*2;
		}
	}

}

练习2:可爱的小明特别喜欢爬楼梯,他又的时候一次爬一台阶,有的时候一次爬两个台阶
         如果这个楼梯有100个台阶,小明一共有多少种爬法呢?

public class Test4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		/*
		 可爱的小明特别喜欢爬楼梯,他又的时候一次爬一台阶,有的时候一次爬两个台阶
		 如果这个楼梯有100个台阶,小明一共有多少种爬法呢?
		 
		  运算结果:
		  1层台阶	1种爬法
		  2层台阶	2种爬法
		  7层台阶	21种爬法
		 
		 */
		System.out.println("小明一共有"+getCount(20)+"种爬法");

	}
	public static int getCount(int n) {
		if(n==1) {
			return 1;
		}
		if(n==2) {
			return 2;
		}
		return getCount(n-1)+getCount(n-2);
	}

}

练习3:可爱的小明特别喜欢爬楼梯,他又的时候一次爬一台阶,有的时候一次爬两个台阶
         ,有的时候一次爬三个台阶,如果这个楼梯有20个台阶,小明一共有多少种爬法呢?

public class Test4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		/*
		 可爱的小明特别喜欢爬楼梯,他又的时候一次爬一台阶,有的时候一次爬两个台阶
		 ,有的时候一次爬三个台阶,如果这个楼梯有20个台阶,小明一共有多少种爬法呢?
		 
		  运算结果:
		  1层台阶	1种爬法
		  2层台阶	2种爬法
		  7层台阶	21种爬法
		 
		 */
		System.out.println("小明一共有"+getCount(20)+"种爬法");

	}
	public static int getCount(int n) {
		if(n==1) {
			return 1;
		}
		if(n==2) {
			return 2;
		}
		if(n==3) {
			return 3;
		}
		return getCount(n-1)+getCount(n-2)+getCount(n-3);
	}

}

练习4:求一个3*3矩阵对角线元素之和

public class sum {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum=0;
		int arr[][]= {{1,2,3},{4,5,6},{7,8,9}};
		for(int i=0;i<3;i++) {
			for(int j=0;j<3;j++) {
				if(i==j || (i==arr[0].length-j-1)) {
					sum+=arr[i][j];
				}
			}
		}
		System.out.println("对角元素上的和为:"+sum);

	}

}

练习5:输入数组,最大的与第一个交换,最小的与最后一个交换,输出数组。

import java.util.Scanner;

public class swap {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int arr[]=new int[10];
		int max=arr[0];
		int min=arr[0];
		System.out.println("请输入一个数组:");
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<arr.length;i++) {
			 arr[i]=sc.nextInt();
			 if(arr[min]>arr[i]) {
				 min=i;
			 }
			 if(arr[max]<arr[i]) {
					max=i;
				}
		}
		int temp=0;
		temp=arr[0];
		arr[0]=arr[max];
		arr[max]=temp;
		temp=arr[arr.length-1];
		arr[arr.length-1]=arr[min];
		arr[min]=temp;
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+" ");
		}

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值