暴力递归
暴力递归
宁皇说java
大专文学专业在读,干过工地和外卖,觉得还是编程香,目前研究方向:分布式微服务,检索引擎,数据仓库
展开
-
蓝桥杯训练营—2n皇后问题(java)(递归回溯)
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。 输出格式 输出一个整数,表示总共有多少种放法。样例输入41 .原创 2022-01-11 08:18:19 · 295 阅读 · 0 评论 -
蓝桥训练营-大臣的旅费(java)(树中权值和最大的通路)
题目:问题描述很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。他有一个钱袋,用于存放往来城市间的路费。聪明的J发现,如果不在某个城市停下来修整,在连续行原创 2022-01-11 08:17:25 · 110 阅读 · 0 评论 -
三升序列的个数
题目思路分别向两个方向深搜代码package 力扣测试;import java.util.Scanner;public class Test { public static void main(String[] args) { int ans = 0; char[][] chs = new char[30][50]; int[][] changedir = { { 0, 1 }, { 1, 0 }, { 1, 1 }, { 1, -原创 2021-11-23 22:41:04 · 65 阅读 · 0 评论 -
leetcode839. 相似字符串组(并查集)
题目思路:一个相似字符组的条件是数组中至少有一个字符和你相似,相当于具有关联关系,这样数组中的相关关系可以形成一段连通的关系网这样我们就可以使用并查集去合并这些有关系的字符,最后返回连通组的个数,即为相似字符组的个数判断是否为相似字符,只需逐位比较,当不同的数量超过2个时(大于等于2)两个字符不相似(相当也相似)==================== 下面简单介绍一下并查集 ======================================并查集三步曲● 定义一个大小为结点总原创 2021-11-23 16:19:06 · 512 阅读 · 0 评论 -
leetcode240. 搜索二维矩阵 II
思路:暴力+二分,遍历每一行,再对每一行进行二分搜索注意:要注意二分中构建mid时的越界问题,为了防止越界应写成left+(right-left)/2=midclass Solution { public boolean searchMatrix(int[][] matrix, int target) { for (int[] row : matrix) { int index = search(row, target); if .原创 2021-11-22 09:48:54 · 65 阅读 · 0 评论 -
《门牌制作》
package 蓝桥杯;public class 门牌制作 { public static void main(String[] args) { int ans=0; for (int i = 1; i <=4040 ; i++) { String a=i+""; for (int j = 0; j < a.length(); j++) { if (a.charAt(j).原创 2021-11-22 09:34:23 · 72 阅读 · 0 评论 -
第39级台阶(递归+dp)
题目思路这题看起来像兔子数列,但题目说第一步先迈左脚,最后一步是右脚,说明,走楼梯的次数为偶数模拟dp过程,观察哪些解不满足 /* 1 1 2 (1,1) (2) 3 (1,1,1) (1,2) (2,1) 4 (1,1,1,1) (2,2) (1,2,1) (2,1,1) (1,1,2) 5 (1,1,2,1) (1,2,1,1) (2,1,1,1原创 2021-11-22 09:31:31 · 693 阅读 · 1 评论 -
蛇形填数(暴力+数学)
思路:转化矩阵横纵坐标13 24 5 610 9 8 711 12 13 14 15转化后的矩阵,列数和之前相同,这时我们需要找到转化后的矩阵的40列的某一行即对应原矩阵的40行40列,我们只需要转化行号即可继续观察规律,发现转化后的矩形,每个斜线上的元素,横纵坐标之差是固定的,而斜线上的元素对应原矩阵的行那么就第40个斜边,就等于原始矩阵的40行,满足方程式 x-y=39 由于y=40 得x=79,这样只需找到转化后矩阵的arr[79][40] 即可pack.原创 2021-11-22 09:15:06 · 246 阅读 · 0 评论 -
leetcode724. 寻找数组的中心下标
思路:使用前缀和算法,记录0~i 下标之间的数的总和,则pre[i]-pre[j] 的值就为i~j位之间的数的总和这里只要处理一下中心下标为0的情况即可代码实现class Solution { public int pivotIndex(int[] nums) { int sum=0; int[] presum=new int[nums.length]; presum[0]=nums[0]; for(int i=1;i<.原创 2021-11-21 10:40:24 · 201 阅读 · 0 评论 -
leetcode766. 托普利茨矩阵
题目描述思路: 依次判断第一行和第一列的对角线元素,处理一下越界的情况即可代码class Solution { int row; int col; public boolean isToeplitzMatrix(int[][] matrix) { row=matrix.length; col=matrix[0].length; for(int i=0;i<row;i++){ if(!istrue(i,原创 2021-11-21 10:34:54 · 56 阅读 · 0 评论 -
交换瓶子-JavaA
有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行: 一个正整数N(N<10000), 表示瓶子的数目第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。输出数据为一行一个正整数,表示至少交换多少次,才能完成排序。例如,输入:53 1 2 5 4原创 2021-04-15 21:52:08 · 138 阅读 · 0 评论 -
灌溉工作Java_模拟
灌溉工作题目描述思路代码题目描述小蓝负责花园的灌溉工作。 花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。 每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。 给定花园水管的位置,请问 k 分钟后,有多少个方格被灌溉好?输入格式 输入的第一行包含两个整数 n, m。原创 2021-04-08 10:11:38 · 281 阅读 · 1 评论 -
垒骰子Java_B
垒骰子题目描述思路代码题目描述垒骰子赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6。假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。atm想计算一下有多少种不同的可能的垒骰子方式。两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同。由于方案数可能原创 2021-04-07 19:46:24 · 246 阅读 · 0 评论 -
取球博弈
取球博弈两个人玩取球的游戏。一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目。如果无法继续取球,则游戏结束。此时,持有奇数个球的一方获胜。如果两人都是奇数,则为平局。假设双方都采用最聪明的取法,第一个取球的人一定能赢吗?试编程解决这个问题。输入格式:第一行3个正整数n1 n2 n3,空格分开,表示每次可取的数目 (0<n1,n2,n3<100)第二行5个正整数x1 x2 … x5,空格分开,表示5局的初始球数(0<xi<1000)输原创 2021-04-03 19:39:24 · 438 阅读 · 1 评论