自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 紫书第四章 函数和递归

文章目录古老的密码(uva1339)刽子手游戏(uva489)古老的密码(uva1339)#include <bits/stdc++.h>#define LOCALusing namespace std;int main(){ char s1[110]; char s2[110]; int c1[150],c2[150]; #ifdef LOCAL freopen("data.in","r",stdin); #endif //

2021-08-11 23:48:54 197

原创 排序算法(冒泡、选择、直插、希尔、堆、归并、快排)

文章目录简单排序冒泡排序选择排序直接插入排序希尔排序堆排序简单排序#include <stdio.h>#include <stdlib.h>#define MAXN 10void swap(int a[],int i,int j){ int t = a[i]; a[i] = a[j]; a[j] = t;}int main(){ int num[MAXN] = {9,1,5,8,3,7,4,6,2,10}; for(in

2021-08-03 15:34:19 224

原创 散列表哈希(除留余数法)

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define HASHSIZE 12#define NULLKEY -(1<<31)int m;typedef struct{ int *elem; //动态数组 int count; //记录哈希表元素个数}HashTable;void Init(HashTable *H){ m = HAS

2021-07-26 20:30:05 819 1

原创 紫书第三章 字符串与字符(例题与习题)

字符串与字符常用函数:char *strcat(char *s1,const char *s2); //把s2拷贝到s1尾部char *strncat(char *s1,const char *s2,int n); //拷贝n个s2的字符到s1的尾部char *strstr(const char *s1,const char *s2); //返回s1字符串中s2字符串第一次出现的位置,找不到返回nullchar *strchr(const char *s1,int s); //返回字符串中s第一次出

2021-07-19 23:44:56 335

原创 AVL树的构建

左子树平衡右子树平衡#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define LH 1#define EH 0#define RH -1typedef struct tree{ int bf; int data; struct tree *left; struct tree *right;}TreeNode,*BiTree;void L_R

2021-07-15 21:12:13 211

原创 查找——顺序、折半、插值、斐波那契与二叉树

顺序查找法从头到尾简单的查找,可以利用哨兵进行改进利用哨兵避免了if判断语句,加快了速度。普通顺序查找法int seq_search(int a[],int n,int key){ for(int i = 1 ; i <= n ; i++) if(a[i] == key) return i; return 0;}哨兵改进int seq_search(int a[],int n,int key){ a[0] = key;

2021-07-11 14:31:35 134

原创 AcWing第五次周赛

3726 调整数组原题链接:https://www.acwing.com/problem/content/3729/给定一个长度为 n 的数组 a1,a2,…,an。每次操作可以使其中任意一个元素的值增加 2。请问,是否可以通过若干次操作使得数组中所有元素的值都相等。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含整数 n。第二行包含 n 个整数 a1,a2,…,an。输出格式每组数据输出一行结果,能使得数组中所有元素的值都相等则输出 YES,否则输出 NO。数

2021-06-27 10:34:14 131

原创 AcWing第四次周赛

3694 A还是B原题地址:https://www.acwing.com/problem/content/3697/给定一个长度为 n 的字符串,字符串中只包含字母 A 和 B。请问,哪个字母在字符串中出现的次数更多?输入格式第一行包含一个整数 n。第二行包含一个长度为 n 的字符串,字符串中只包含大写字母 A 和 B(也可能只包含 A 或只包含 B)。输出格式如果字母 A 出现的次数更多,则输出 A。如果字母 B 出现的次数更多,则输出 B。如果出现的次数一样多,则输出 T。数据范围

2021-06-27 08:16:14 237

原创 拓扑排序练习:车站分级(洛谷P1983) 排序(洛谷P1347)

题目描述输入输出提示说明题解拓扑排序,起始点与终点之间未停靠的车站就是有向图入度为0的头,给停靠点增加入度,若别的样例中出现了前面停靠点在此样例不停靠的情况,该变化点入度不增,其他停靠点继续增加入度,会让拓扑排序的次数+1,也就是说拓扑排序的次数就是最少等级划分。为什么“若别的样例中出现了前面停靠点在此样例不停靠的情况”会增加新的等级?(以题目中的样例2为准)因为起始到终点是从左到右,且成图只能从左到右,若出现变化点,证明在本样例新出现的点(9)是大于变化点的(3,6),而其他样例出

2021-06-12 16:50:23 377

原创 邻接表、十字邻链表、拓扑排序(AOV图)与关键路径(AOE图)

#include <stdio.h>#include <stdlib.h>#define MAXN 1000typedef struct EdgeNode{ int weight; int adjvex; struct EdgeNode *next;}EdgeNode;typedef struct VexNode{ //data可存储该结点信息 EdgeNode *firstEdge;}AdjList[MAXN];type

2021-06-12 09:42:24 854 1

原创 树状数组与线段树

这里写自定义目录标题树状数组含义与原理线段树实现,累加与改变数值树状数组含义与原理与部分位置和的一种方法,拥有前缀和快速取得结果的特点(O(2logn)),也拥有普通枚举快速修改的优势(O(logn))。以数组的形式模仿树,一般用于维护前缀和,算法复杂度与线段树相同,但由于是数组,且线段树保存的是区间,面对过大的数据,无法解决,故树状数组能解决的问题线段树也能,线段树能解决的问题,树状数组不一定可以。以这张图为例:A数组为原始数组 C数组为树状数组。C【i】=A【i-2^k+1】+A【i-2

2021-06-09 19:17:31 230 1

原创 分治法练习

这里写自定义目录标题分治法含义分治法练习分治法练习1:循坏赛日程安排问题分治法练习2:棋盘覆盖问题(待更)分治法含义分治法,字面意思是“分而治之”,就是把一个复杂的1问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并,这个思想是很多高效算法的基础,例如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)等。分治法的基本思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治策略:对

2021-06-07 22:25:52 749

原创 Thinking in java 第一章 对象导论(由于是总结将随着书本的学习而更新)

这里写自定义目录标题1.1 抽象过程1.2 每个对象都一个接口1.3 每个对象都提供服务1.4 被隐藏的具体实现1.5 复用的具体实现1.6 继承1.7 伴随多态的可互换对象1.8 单根继承结构1.1 抽象过程1)万物皆为对象。 对象就是个奇特的变量,里面可以存放基础数据类型,可以包含其他已有的对象,构建一个对待特定问题的解决变量。**2)程序是对象的集合了,它们通过发送消息来告知彼此所要做的。 调用对象,就需要向对象发送调用请求。3)每个对象都有自己的由其他对象所构成的存储。 即可以通过已有的对

2021-06-06 18:54:26 89 1

原创 2019年第十届蓝桥杯C/C++国赛b组

第十届蓝桥杯国赛CB试题A:平方序列试题B:质数拆开试题A:平方序列题解签到!#include <stdio.h>#include <stdlib.h>#include <math.h>#define N 9999int main(){ long long int i,j; for(i=2020;i<=N;i++) { long long int x=i*i-2019*2019; long

2021-05-30 21:45:45 2240 16

原创 2020第十一届蓝桥杯C/C++国赛B组

文章目录试题 A: 美丽的 2试题 B: 扩散试题 C: 阶乘约数试题 A: 美丽的 2本题总分:5 分【问题描述】小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?题解签到题答案:563#include <stdio.h>#include <stdlib.h>int check(int x){ while(x!=0) { if(x

2021-05-24 22:42:29 12154 21

原创 BeatBox终极版——Head first java 650

服务端import java.io.*;import java.util.*;import java.net.*;public class MusicServer { ArrayList<ObjectOutputStream> clientOutputStreams; public static void main(String[] args) { new MusicServer().go(); } public class Clie

2021-05-20 21:59:25 246

原创 远程部署服务——Head first java 640(改进原文,采用动态注册)

服务端接口import java.rmi.*;public interface ServiceServer extends Remote{ //返回服务存储在HashMap中的key Object[] getServiceList() throws RemoteException; //利用key寻得服务端中的服务将其返回 Service getService(Object serviceKey) throws RemoteException;}服务器接口im

2021-05-19 22:39:28 151 1

原创 力扣993 二叉树的堂兄弟节点——二叉树上的BFS

在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。示例 1:输入:root = [1,2,3,4], x = 4, y = 3输出:false示例 2:输入:root = [1,2,3,null,4,

2021-05-17 23:05:55 108

原创 停在原地的方案数——力扣1269 整数转罗马数字——力扣12 罗马数字转整数——力扣13

有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。由于答案可能会很大,请返回方案数 模 10^9 + 7 后的结果。示例 1:输入:steps = 3, arrLen = 2输出:4解释:3 步后,总共有 4 种不同的方法可以停在索引 0 处。向右,向左

2021-05-13 20:23:41 126 1

原创 力扣1310子数组异或查询——前缀和 力扣1442 形成两个异或相等数组的三元组数目——前缀和

子数组异或查询有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。示例 1:输入:arr = [1,3,4,8], queries = [[0,1],[1,2],[0,3],[3,3]]输出:[2,7,14,.

2021-05-12 15:31:30 113

原创 力扣1734解码异或后的排列——DFS与数学解法

给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。给你 encoded 数组,请你返回原始数组 perm 。题目保证答案存在且唯一。示例 1:输入:encoded = [3,1]输出:[1,2,3]解释:如果 perm = [1,2,3

2021-05-11 20:35:16 89

原创 非常非常简单的聊天室——Head first java 518

客户端import java.io.*;import java.net.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class SimpleChatClient { JTextArea inComing; //聊天框 JTextArea output; //发送端 BufferedReader reader; PrintWriter writer;

2021-05-11 17:18:43 135

原创 简单说明并发性问题——head first java 504

并发性故事杰纶和沛晨是一对同居冤家并且把钱存在一起,但如果不把问题解决掉他们很快就会分手,这是为什么呢?沛晨这么想:杰纶和我说好了不会透支花费,所以规定每个人花钱之前必须检查余额,这看起来很简单,但有一天我们就突然发现连预借现金的额度也用掉了。事情是这样的:杰纶需要5万元上夜店,查了一下余额还有10万,是可以提钱的,但他没有先提钱,反而先去睡了一觉(线程中的睡眠)。沛晨回家时杰纶还在睡,而沛晨想买个10万的包包,因此查了一下余额,发现足够(还有10万杰纶还没醒来取钱),真是太幸运了。然后沛晨把钱

2021-05-10 21:58:05 84

原创 第十二届蓝桥杯c 第二场 城邦(最小生成树普罗里姆算法实现) 整数分解(隔板法)

#include <stdio.h>#include <stdlib.h>#define N 2022int arc[N][N];int money(int x,int y){ int a[4]={0}; int b[4]={0}; for(int i=0;i<4;i++) { if(x!=0) a[i]=x%10; if(y!=0) b[i]=y%10.

2021-05-10 21:30:29 708 1

原创 线性结构上的动态规划——紫书P274~275(LIS,LCS与UVA11400照明系统设计)

一、最长上升子序列(LIS)题意给定n个整数A1,A2…An,从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列可以理解为:删除0个或多个数,其他数的顺序不变。)例如序列1,6,2,3,7,5,可以选出上升子序列·1,2,3,5,也可以选出1,6,7,但前者跟车,选出的上升子序列中相邻的元素不能相等。(紫书P274)O(n^2)作法分析用dp保存以位置i结尾的最长上升序列的长度,后继dp从其中寻找满足条件的最大值即可。#include <stdio.h>#include &l

2021-05-07 20:06:21 297 2

原创 最大连续子序和——力扣53

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000提示:1 <= nu

2021-05-07 19:14:44 174

原创 第十一届蓝桥杯C/C++ B组第二场

#include <stdio.h>#include <stdlib.h>int count;void Count_2(int x){ while(x!=0) { if(x%10==2) count++; x/=10; }}int main(){ int i; for(i=1;i<=2020;i++) Count_2(i); printf.

2021-05-04 16:56:59 121

原创 七对数字(第七届蓝桥杯)

今有七对数字:两个1,两个2,两个3,…两个7,把它们排成一排。要求,两个1之间有1个数字,两个2之间有两个数字,以此类推,两个7之间有7个数字。以下就是一个符合要求的排列:17126425374635当然,如果把它倒过来也是符合要求的。请你找出另一种符合要求的排列法,并且以74 开头。注意,只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等#include <stdio.h>#include <stdlib.h>int vis[8];void D.

2021-05-02 18:14:52 184

原创 背包问题——无限物品的背包问题,0-1背包问题与劲歌金曲(uva12563)

无限物品的背包问题物品无限的背包问题。有n种物品,每种均有无穷多个。第i种物品的体积为Vi,重量为Wi。选一些物品装到一个容量为C的背包中,使得背包内物品在总体积不超过C的前提下重量尽量大。1≤n≤1001≤n≤100,1≤Vi≤C≤10000,1≤Wi≤106。测试数据:3 51 22 33 2answer:103 72 13 24 3answer:53 53 34 23 2answer:30解题思路dp思维:每个物品都可以无限使用,且我们不需要考虑

2021-05-02 11:27:50 2226 2

原创 力扣403 青蛙过河——动态规划

403. 青蛙过河一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1

2021-04-29 21:10:32 335

原创 巴比伦塔(The Tower of Babylon,UVa 437)——DAG上的动态规划紫书269

题意:有n(n<=30)种立方体,每种都有无穷多个。要求选一些立方体;摞成一根尽量高的柱子(可以自行选择哪一条作为高), 使得每个立方体的底面长宽分别严格小于它下方立方体的地面长宽,求最高高度。解题思路就是DAG上的动态规划,各个立方体之间成有向图,求最长路。注意:这题有个细节一个样例能形成三个图形如:10,20,30 可形成 (10,20,30) (10,30,20) (30,20,10) 长宽位置无所谓因为可以旋转,由高来判断不同立方体#include <stdio.h>

2021-04-29 11:22:28 309 1

原创 城市里的间谍(A Spy in the Metro,ACM/ICPC world Finals 2003,UVa1025)-紫书p267

DescriptionSample Input4555 10 1540 5 10 2040 5 10 154181 2 350 3 6 10 1260 3 5 7 12 152302012071 3 5 7 11 13 170Sample OutputCase Number 1: 5Case Number 2: 0Case Number 3: impossible题目大意某城市的地铁是线性的,有n(2≤n≤50)个车站,从左到右编号为1~n。有M1

2021-04-28 22:10:08 193

原创 力扣63 平方数之和

平方数之和给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。示例 1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:输入:c = 3输出:false示例 3:输入:c = 4输出:true示例 4:输入:c = 2输出:true示例 5:输入:c = 1输出:true#include <stdio.h>#include <stdlib.h>#include &lt.

2021-04-28 14:53:57 64

原创 硬币问题——紫书p261(递归,递推与最小字典序输出)

硬币问题有n种硬币,面值分别V1,V2,V3,…,Vn,每种有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值。1<=n<=100 0<=S<=10000 1<=Vi<=S解题思路最长路与最短路问题int dp_max(int S,int v[],int n){ int *ans=&dma[S]; //ans和dma共为一个变量 c++用法:int &amp

2021-04-27 21:56:40 260 1

原创 力扣938二叉搜索树的范围和

给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val <= 1051 <= low &

2021-04-27 20:30:57 57

原创 力扣1011 在D天内送包裹的能力——二分法查找

传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第 1 天:1, 2, 3, 4, 5第 2 天:6,

2021-04-26 20:52:43 103

原创 剑指offer13 机器人的运动——DFS

地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3, n

2021-04-26 10:11:57 78

原创 嵌套矩阵——DAG动态规划

题目 2075: 矩阵嵌套时间限制: 1Sec 内存限制: 128MB 提交: 259 解决: 54题目描述有 n 个矩形,每个矩形可以用 a,b来描述,表示长和宽。矩形 X(a,b)可以嵌套在矩形 Y(c,d)中当且仅当 a <c,b<d或者 b<c,a<d(相当于旋转 90 度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。输入第一行是一个正正数 N(0&

2021-04-25 19:45:56 1333 1

原创 八皇后问题——递归与dfs

问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。解题思路其实就是简单的dfs或递归,前提是如何判断同一斜线,主对角线上 (x,y)(i,j),要是处于同一条对角线则x+yi+j如果处于同一条副对角线则 x-yi-j递归解法题目题目 2047: x皇后问题时间限制: 1Sec 内存限制: 128MB 提交: 123 解决: 69题目描述请输出字典序最小的x皇后问题对应的排列。(x<=10)输入

2021-04-25 19:02:41 220 1

原创 力扣72编辑距离(二维数组解法,一维数组解法)——C语言

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)示例 2:输入:word1 = “intention”

2021-04-23 10:24:05 273

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除