JAVA---跳跃游戏问题

题目要求如下图所示:
在这里插入图片描述
解题思路:basestep:默认为1;

01n-3n-2n-1位置
321040
3<42<31<20<14>1目的地basestep=1
54321更改后的basestep

a[0]<basestep——>不可以到达最后

  1. 由前一项到达后一项最短距离需要1步,即basestep设置为1;
  2. 当第n-2项为0,即到达第n-1的距离需要在第n-3项才可以完成,第n-2项 需要m步,则第n-3项需要m+1步到达。
  3. 判断当前位置是否满足到达下一位置的基本步数,不满足,向前推进一个位置,则相对的basestep++,最后判定的条件自然归结为,最开始位置的元素大小是否大于等于basestep,如果大于等于,可以达到,反之则不可以。

主体代码:

int basestep=1;
for(int i=a.length-2;i>=0;i--)
{
	if(a[i]>=basestep){
		basestep=1;
	}else{
		basestep++;
	}	
}
if(a[0]>=basestep)
{
	System.out.print("此条路可以到达");
}

题目代码:

public class Eggtest {

	public static void main(String[] args) {
		Scanner scan =new Scanner(System.in);
		System.out.println("行数"+"\t"+"个数:");
		int row=scan.nextInt();
		int colum=scan.nextInt();
		int [][]a=new int[row][colum];
		//并且规定每行的最后一个元素为蛋黄酥0
		//初始化蛋黄酥
		for(int i=0;i<row;i++)
		{
			for(int j=0;j<colum;j++)
			{
				a[i][colum-1]=0;
			}
		}
		//输入元素
		for(int i=0;i<row;i++)
		{
			System.out.println("输入第"+(i+1)+"行元素,最后一位元素可以不输入:");
			for(int j=0;j<colum-1;j++)
			{
				a[i][j]=scan.nextInt();
			}
		}
		
		//输出元素
		for(int i=0;i<row;i++)
		{
			for(int j=0;j<colum;j++)
			{
				System.out.print(a[i][j]+"\t");
			}
			System.out.println();
		}
		//判定可以吃得到的元素
		System.out.println("输出结果:");
		for(int i=0;i<a.length;i++)
		{
			int basestep=1;//由前一个到后面的数最少步数
			for(int j=a[i].length-2;j>=0;j--)
			{
				if(a[i][j]>=basestep){
					basestep=1;
				}else{
					basestep++;
				}	
			}
			//输出结果
			if(a[i][0]>=basestep)
			{
				System.out.print((i+1)+"\t");
			}
		}
		
	}
}

运行结果:

行数	个数:
3 6
输入第1行元素,最后一位元素可以不输入:
3 2 1 0 4
输入第2行元素,最后一位元素可以不输入:
1 2 2 0 3
输入第3行元素,最后一位元素可以不输入:
2 3 1 2 1
3	2	1	0	4	0	
1	2	2	0	3	0	
2	3	1	2	1	0	
输出结果:
2	3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值