算法
freetoshare
生命在于奔跑,生活在于体验。。。
展开
-
P4779 迪杰斯特拉算法
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.StreamTokenizer;import java.util.ArrayList;import java.util.Arrays;import java.ut.原创 2021-06-09 18:40:14 · 182 阅读 · 0 评论 -
算法:安装防小偷摄像头(DFS+BFS/回溯)
题目大意:在N*N的格子中,用‘#’标识墙壁,点‘.’标识有效空间,K标识摄像头监视距离,可拐弯,可以向上下左右四个方向监视,求最少可安装多少个摄像头,就可以监视全部区域,如果摄像头个数大于5,则输出-1.测试用例25 2..#...##.....#..#......#.5 3..#...##.....#..#......#.----输出------#1 4#2 3import java.io.FileInputStream;原创 2021-04-29 14:04:39 · 218 阅读 · 0 评论 -
P1002 过河卒(动态规划dp)
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Scanner;/** * 关键:最终的结果是指数级增长,注意选取数据类型为long, * 若选择int,由于数据量大于int最大值,再增加结果就缩小了,导致出错。 */public class P1002 { static long[][] map ; static int bx,by; static int ho.原创 2021-04-09 16:06:06 · 149 阅读 · 0 评论 -
P1255 数楼梯(动态规划)
import java.math.BigInteger;import java.util.Scanner;public class P1255 { static int N; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); BigInteger[] num = new BigInteger[N+1]; if(N==0) { num[.原创 2021-03-30 08:46:54 · 75 阅读 · 0 评论 -
P2036 PERKET食物(DFS+不降原则)
import java.util.Scanner;public class P2036 { static int N,s=1,b=0; static int min; static int[][] taste; static boolean[] flag; public static void main(String[] args){ Scanner sc = new Scanner(System.in); N = sc.nextInt(); taste = new int[N].原创 2021-03-26 16:08:21 · 157 阅读 · 0 评论 -
SW adv楼栋摆列方式(DFS+照相)
import java.io.FileInputStream;import java.util.Arrays;import java.util.Scanner;/** * 题目大意:给定测试用例个数T,N栋建筑物,N层建筑物的层高为N,建筑物在一条直线上, * 给出从直线两端看建筑物图形,求建筑物的排列方式有几种 */public class Soution2 { static int T,N,count; static int[] left,right; static boolean.原创 2021-03-26 11:10:11 · 85 阅读 · 0 评论 -
PP2392 考前临时抱佛脚(递归+搜索)
import java.util.Scanner;public class P2392 { static int[] s = new int[4]; static int[][] a = new int[4][20]; static int left,right,min,ans=0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int i=0;i<4;i++) .原创 2021-03-24 13:46:33 · 91 阅读 · 0 评论 -
PP2392考前临时抱佛脚 (递归)
import java.util.Scanner;public class P2392 { static int[] s = new int[4]; static int[][] a = new int[4][20]; static int left,right,min,ans=0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int i=0;i<4;i++) .原创 2021-03-22 14:29:17 · 76 阅读 · 0 评论 -
P1149 火柴棒等式(打表法)
打表法:在数据量不大的情况下,提前将所有可能的结果全部列出来。然后,根据要求,直接从结果集中获取结果import java.util.Scanner;public class P1149 { static int n; static int[] a = {6,2,5,5,4,5,6,3,7,6}; static int[] b = new int[25]; public static void main(String[] args) {// 打表程序,将结果给b数组// daBia原创 2021-03-17 15:42:25 · 101 阅读 · 0 评论 -
P1217 回文质数
简单的暴力枚举肯定超时。1,限定范围,判断回文,判断质数。import java.util.Scanner;public class P1217 { static int a,b; static int count=0; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); a = s原创 2021-03-17 09:26:03 · 179 阅读 · 0 评论 -
P3654 First Step (遍历枚举)
import java.util.Scanner;public class P3654 { static int R,C,K,count=0; static char[][] grid = new char[100][100]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); R = sc.nextInt(); C = sc.nextInt(); K = sc.nex.原创 2021-03-16 18:28:56 · 147 阅读 · 0 评论 -
P3392 涂国旗(DFS思想+for循环)
import java.util.Scanner;public class P3392 { static int N,M,count; static int wCount=0,bCount=0,rCount=0; static char[][] grid = new char[50][50]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); .原创 2021-03-16 15:03:14 · 384 阅读 · 2 评论 -
P1088 火星人(全排列,DFS+时间复杂度压缩)
import java.util.Scanner;public class P1088 { static int N,M,T; static int[] a; static boolean[] flag; static boolean[] isVisited;//是否找到结果标记 static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws Exception { .原创 2021-03-15 19:21:03 · 369 阅读 · 1 评论 -
P1036 选数(DFS+不降原则去重)
import java.util.Scanner;public class P1036{ static int n,k,count=0; static int[] a ; static boolean[] flag ; static int[] b ; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); k = sc.nextInt(); .原创 2021-03-12 12:44:45 · 128 阅读 · 0 评论 -
P2089 烤鸡(DFS)
import java.util.Scanner;public class P2089 { static int n,count=0; static boolean[] flag = new boolean[4]; static int[] a = new int[11]; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) { Scanner sc = new Sca.原创 2021-03-12 08:10:44 · 247 阅读 · 0 评论 -
P1618 三连击 (DFS+回溯)
import java.util.Scanner;public class P1618 { static int A,B,C; static int a,b,c; static boolean[] flag = new boolean[10]; static int[] arr = new int[10]; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) { Sc.原创 2021-03-10 16:39:32 · 201 阅读 · 0 评论 -
P1706 全排列问题(DFS+回溯)
import java.util.Scanner;/** * DFS+回溯算法 * 关键:时间复杂度控制,直接输出会超时,用StringBuilder提高效率 */public class P1706 { static StringBuilder sb = new StringBuilder(); static int n; static int[] arr; static boolean[] flag; public static void main(String[] args) ..原创 2021-03-03 18:58:35 · 182 阅读 · 1 评论 -
P1157 组合的输出(dfs)
import java.util.Scanner;public class P1157 { static int T,n,r; static int[] arr; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); r = sc.nextInt(); arr = new int[r+1]; dfs(1); } private s.原创 2021-02-25 16:43:53 · 130 阅读 · 0 评论 -
P2241 统计正方形和长方形
import java.util.Scanner;public class P2241 { static int T,n,m; static Long a,b;//a正方形个数,b长方形个数。 public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); m = sc.nextInt(); a = 0l; b = 0l; for(in.原创 2021-02-25 10:17:48 · 124 阅读 · 0 评论 -
P3884 二叉树问题 (DFS)
import java.util.Scanner;/** * P3884二叉树问题 */public class P3884 { static int dx=0; static int dy=0; static Scanner in = new Scanner(System.in); static int n = in.nextInt(); static int deep[] = new int[n + 1]; //每个节点的深度 ,下标从1开始 s.原创 2021-02-05 10:33:11 · 140 阅读 · 0 评论 -
P1162 填土颜色 (dfs)
import java.util.ArrayDeque;import java.util.Scanner;/** * P1162 填土颜色 (dfs) */public class P1162 { static int T, n; static int[][] map; static ArrayDeque<NodeC> que = new ArrayDeque<NodeC>(); static int[][] dir = {{-1,0},{+1,0},{0,..原创 2021-01-25 10:15:08 · 96 阅读 · 0 评论 -
P2802回家(BFS+标记)
import java.util.ArrayDeque;import java.util.Scanner;/** * BFS * 1)定义Node为每一步状态,包含坐标x,y,时间time,能量p。 * 2)以小H出发点2为起点,家3为终点,向四个方向BFS搜索,每走一步将当前能量所走点标记为true。 * 3)当走到有鼠标的点时,p重置为6。 * 4)当到达终点时且能量P>0,即得到答案time, * 关键:三位数组标记走过的点,3滴血和5滴血走过的点是不一样的 */publ..原创 2021-01-25 10:10:29 · 161 阅读 · 0 评论 -
P2802 回家(BFS)
import java.util.ArrayDeque;import java.util.Scanner;/** * BFS * 关键:三位数组标记走过的点,3滴血和5滴血走过的点是不一样的 */public class P2802 { static int T, n, m, ans; static int[][] map; static boolean[][][] flag; static int[][] dir = { { -1, 0 }, { +1, 0 }, { 0, -1 ..原创 2021-01-19 15:20:06 · 301 阅读 · 0 评论 -
P1443(BFS+路径还原变形题)
import java.util.ArrayDeque;import java.util.Scanner;/*** 注意:不能将每个点做为目标点,循环使用BFS求出到达每个点的步数,这样时间复杂度O(n*m)太大* 应该,以马所在位置为起点,走整个棋盘,把到达每个点的步数记录即可,这样走一边BFS即可得到结果*/public class P1443 { static int T,n,m,sx,sy,ansTime; static boolean[][] flag;//标记 static .原创 2021-01-13 08:26:55 · 80 阅读 · 0 评论 -
P1219八皇后(DFS+回溯)
import java.util.Scanner;/** * 八皇后问题 * 算法:DFS+回溯算法, * 注意,逐个遍历时间复杂度过高,数据量大时,结果正确但不符合要求。 * 优化:以行为单位,一行放下,该行就不能再放,直接从下一行开始遍历。 */public class P1219_project { static int n, count = 0; static int[] cols = new int[14];// 列 static int[] u = new in..原创 2020-12-28 14:28:31 · 107 阅读 · 0 评论 -
P3367(并查集+路径压缩)
import java.util.Scanner;/** * 并查集+路径压缩 * 解决问题:解决关联关系, * 1、初始化所有的节点祖先节点为自己。 * 2、查找每个节点的祖先节点。路径压缩(搜索到祖先节点,并将子节点上级节点指向祖先节点) * 3,合并:把一个点的祖先变成另一个点的祖先。 */public class P3367 { static int T,n,m; static int[] f;//元素i的祖先节点 public static void main(Strin.原创 2020-12-23 14:14:50 · 230 阅读 · 0 评论 -
P1123(DFS+回溯算法)
import java.util.Scanner;/** * P1123取数求和 * DFS+回溯 * 解决问题:求最优解,需要遍历每一种可能,然后排除不合理的情况。 * 实质是递归。 */public class P1123 { static int T,n,m,ans; static int[][] map; static int[][] dir = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};//八个方向 s.原创 2020-12-22 15:09:21 · 118 阅读 · 0 评论 -
POJ3984(BFS+路径还原)
package adv;import java.util.ArrayDeque;import java.util.Scanner;/** * Poj3984迷宫问题 * BFS+路径还原 */public class POJ3984 { static int T,n,m,ans; static int startx,starty,endx,endy; static int[][] map; static boolean[][] flag; static int[][] dir .原创 2020-12-21 13:55:35 · 235 阅读 · 0 评论