计算九宫格解锁的解法和
来源:互联网 发布:go 并发编程 编辑:程序博客网 时间:2024/04/28 06:43
要求:
至少经过四个点;
不能重复经过同一个点;
路径上的中间点不能跳过(如从1到3一定会经过2);
如果中间的点是之前已经用过的,那么这个点就可以被跳过(如213,因为2已经被用过,1就可以越过2与3连接,132是不允许的)。
输出
九宫格的解法和(一个数字)
代码
public class Main { static int[][] a= new int[10][10]; public static void main(String[] args) { //排除不可能情况 a[1][3] = 2; a[3][1] = 2; a[4][6] = 5; a[6][4] = 5; a[7][9] = 8; a[9][7] = 8; a[1][7] = 4; a[7][1] = 4; a[2][8] = 5; a[8][2] = 5; a[3][9] = 6; a[9][3] = 6; a[1][9] = 5; a[9][1] = 5; a[3][7] = 5; a[7][3] = 5; //计算长度为2~9的解法和 System.out.println(f(4,"")+f(5,"")+f(6,"")+f(7,"")+f(8,"")+f(9,""));//389112 } private static int f(int tar, String result) { int sum = 0;//解法和 //当长度为0时,返回1 if(tar == 0) return 1; for(int i = 1;i <= 9;i++){ //当序列中存在i,则跳过 if(result.contains(i+"")) continue; //当序列非空时逻辑 if(result.length() > 0){ //找到序列中最后的起点 int x = result.charAt(result.length()-1) - '0'; //当起点到i不能直达(a[x][i]>0)且结果中不存在中间点(a[x][i]),跳过 if(a[x][i] > 0 && !result.contains(a[x][i]+"")) continue; } //递归求和 sum += f(tar-1,result+i); } return sum; } }
0 0
- 计算九宫格解锁的解法和
- 九宫格的计算
- Android之九宫格解锁的实现
- Android之九宫格解锁的实现
- android简单的九宫格解锁view
- Android之九宫格解锁的实现
- Android九宫格解锁的实现
- 自定义九宫格解锁的实现
- iOS- 九宫格解锁
- android九宫格解锁
- 手势解锁-九宫格
- 九宫格手势解锁
- 九宫格手势解锁
- 九宫格解锁
- Android九宫格解锁
- 九宫格解锁
- 九宫格的计算思路
- Android手势解锁, 九宫格解锁
- 《mysql学习》-- MySQL数据库设计总结
- 541. Reverse String II
- 1091
- 来吧Unity 3D
- 欧拉图
- 计算九宫格解锁的解法和
- java八种基本排序的实现
- 写给准备秋招的学弟学妹们
- 《mysql学习》-- 锁
- 算法导论 练习题 5.3-4
- JAVA_我的程序人生
- 《mysql学习》-- explain执行计划
- iOS 播放视频进行滑动获取每一帧图片并且通过UIImageView展示出来
- c#---delegate关键字