【蓝桥杯2017Java】迷宫、9数算式

迷宫

在这里插入图片描述
在这里插入图片描述

这道题简单是挺简单的,但是就是代码量多了点,主要就是地图转化成数组。想法也很简单,就是,如果走到了超出数组,就说明走出去了,返回true,如果走到了之前走过的地方,那就进入死循环出不来了,就返回false

public class Main {
	static int counts=0;
	static String[]map0= {"UDDLUULRUL"
					,     "UURLLLRRRU"
					,     "RRUURLDLRD"
		            ,     "RUDDDDUUUU"
					,     "URUDLLRRUU"
					,     "DURLRLDLRL"
					,     "ULLURLLRDU"
					,     "RDLULLRDDD"
					,     "UUDDUDUDLL"
					,     "ULRDLUURRR"};
	static char[][]map;
	public static void main(final String[] args) {
		map=new char[10][10];
		boolean [][]vis=new boolean[10][10];
		for(String i:map0)map[counts++]=i.toCharArray();
		counts=0;
        for(int i=0;i<10;i++) {
        	for(int j=0;j<10;j++) {
        		if(notLeave(i, j, new boolean[10][10]))counts++;
        	}
        }
        System.out.println(counts);
	}
	static boolean notLeave(int i,int j,boolean[][] vis) {
		if(i<0||i>9||j<0||j>9)return true;
		else if(vis[i][j]==true)return false;
		else {
			vis[i][j]=true;
			if(map[i][j]=='U') {
				return notLeave(i-1, j, vis);
			}
			else if(map[i][j]=='D') {
				return notLeave(i+1, j, vis);
			}
			else if(map[i][j]=='R') {
				return notLeave(i, j+1, vis);
			}
			else{
				return notLeave(i, j-1, vis);
			}
		}
	}
}

答案31

9数算式

在这里插入图片描述
这道题用到的知识是全排列,全排列只要学会用模板就行了。
Java实现全排列

public class Main {
	static int counts=0;
	static String nums="123456789";
	public static void main(final String[] args) {
		f(nums.toCharArray(),0);
		System.out.println(counts/2);
	}
	static void f(char[]num,int i) {
		if(i==num.length) {
			String all = String.valueOf(num);
			for(int mul=1;mul<9;mul++) {
				int num1=Integer.parseInt(all.substring(0,mul));
				int num2=Integer.parseInt(all.substring(mul,9));
				String res =String.valueOf(num1*num2);
				if(res.length()==9&&check(res)) {
					counts++;
				}
			}
			return;
		}
		for(int j=i;j<num.length;j++) {
			char temp=num[i];num[i]=num[j];num[j]=temp;
			f(num,i+1);
			temp=num[i];num[i]=num[j];num[j]=temp;
		}
	}
	static boolean check(String str) {
		if(str.contains("1")
				&&str.contains("2")&&str.contains("3")&&str.contains("4")
				&&str.contains("5")&&str.contains("6")&&str.contains("7")
				&&str.contains("8")&&str.contains("9"))return true;
		return false;
	}
}

答案1625

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值