pullze

初始正方形中的带圆圈的数字是可以移动到沿着行的其他正方形的标记。 在拼图的每个步骤,可以移动标记的正方形中由当前占据的整数指示的方格数。 标记可以沿着该行向左或向右移动,但可以不移动经过任一端。 例如,唯一合法的第一步是将标记向右移动三个方格,因为没有空间向左移动三个空格。

拼图的目标是将标记移动到行的远端的0。

要求: 用递归 或 栈或者队列实现编程。
如果圆圈能够移动到最后0的位置,返回true,否则返回false。
程序要适应任何大小的方格数,并且方格里的数字是随机的,范围是[1,9]。

import java.util.ArrayList;
import java.util.Random;public class HomeWork {  
/*** 进行数组第一次的移动* * @param a  ArrayList类型的数组* @param  tmp  开始位置的下标* @return* */     public static int move(ArrayList a,int tmp) { if((tmp+a.get(tmp))<=a.size()-1){tmp=tmp+a.get(tmp);  }else{if(tmp-a.get(tmp)>=0){tmp=tmp-a.get(tmp);}}return tmp;} /**
* 通过调用move函数让数组进行移动
* 
* @param a  ArrayList类型的数组
* @param  tmp   开始位置的下标
* @return
* 
* */public static boolean puzzle(ArrayList a,int tmp){while(tmp!=a.size()-1){if(a.get(tmp)+tmp>a.size()-1&&tmp-a.get(tmp)<0){break;}tmp=move(a, tmp);}       if(tmp==a.size()-1){return true;}else{return false;}}/*** 创建一个随机数组* * @return* */ public static ArrayList random(){ArrayList a=new ArrayList ();Random b=new  Random();a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));a.add(b.nextInt(10));return a;}public static void main(String[] args) {  ArrayList a=random();      System.out.println(puzzle(a, 0));}  
} 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部