- 博客(66)
- 问答 (1)
- 收藏
- 关注
原创 js遍历map
记录一下,可以直接跳过,看下面的错误和正确示范今天在写项目的时候,程序中的一个操作是需要在更新画布的同时将对应的json也进行同步更新,而更新这个json时需要将一个map对象转为json格式,然后赋值给json 的一个属性[暂时叫这个属性为 jMap]. 但每次更新json后,json的jMap属性都为空,因为这个操作的代码逻辑相对比较复杂,而且一开始也没想到会是这里出问题,所以这个问题找了找了将近两个小时才发现问题的根源,就是出在将map对象转为json格式上,先看一下我之前的错误示范:错误的遍历方
2022-02-16 00:10:14 2130
原创 将11~36进制转换为10进制(c++)
输入说明第一行为一个正整数N(0<N>=1000,表示待处理的数量. 第二行为N个待处理数,以空格隔开,在表示时,大写字母表示进制,小写字母表示数值(如D表示14进制,在14进制中'0'~'9'对应十进制中的0~9,'a'~'d'对应十进制的10~13)如果存在非法表达,则该组表示无效,输出-1输出说明找出数值最大的数,输出它对应的十进制数输入样例:3A21 B10 Cb结果输出3代码如下:#include <iostream> #include <
2021-12-11 21:59:20 1460
原创 类之间的6种关系
1.继承(泛化)指一个类对与另一个类有继承关系,比如A extends B2.依赖类之间有依赖关系,一个类的改变会影响到其它的类3.实现指接口和类之间的关系4.关联表示没有其它关系的类之间的某种语义依赖,例如:“学生”和“教师”是两个独立的类,但是它们都和“课程”有关。5.聚合指一个类是另一个类的一部分,一般是A是B的一个成员,但是A是可以更换的。6.组合指一个类是另一个类的一部分,一般是A是B的一部分,但是A是不可更换的。在初始化后就不可以再改变它了。...
2021-06-07 09:44:30 3034
原创 kruskal算法
#include<iostream>#include<algorithm>using namespace std;const int N=2e5+10;int p[N];int n,m;struct edge{ int v1,v2,w;}ed[N];bool cmp(edge e1,edge e2){ return e1.w<e2.w;}int find(int x){ if(x!=p[x])p[x]=find(p[x]);
2021-06-05 18:05:47 91
原创 prim算法
#include<iostream>#include<cstring>using namespace std;const int N=510,INF=0x3f3f3f3f;int g[N][N];int dist[N];int n,m;bool mark[N];int prim(){ memset(dist,0x3f,sizeof dist); int res=0; for(int i=0;i<n;i++){ in
2021-06-05 17:33:36 96
原创 KMP。。。
KMP是字符串匹配算法,相对于暴力做法,kmp保持文本串不回溯,而将模式串回溯,文本串只需要依次枚举即可。kmp的思想是求出模式串每个位置的最长的重复的子串,(最长保证了该算法不会漏掉任何一个可以匹配的情况),并将子串的长度保存到next数组中,如果当前位置匹配失败,指向模式串的指针就会回溯到j=next[j]的位置,尝试去向后寻找可匹配的字符,如果没找到会继续回溯,此时原本的j=next[next[j]],如果还找不到就继续,直到找到或者j=0为止。例如模式串abcdabfabg 这个串里共有三个ab
2021-05-31 13:08:53 143
原创 acwing每日一题:AcWing 3574. 乘积数量
给定一个长度为 n 且不包含 0 的整数序列 a1,a2,…,an。请你计算以下两值:使得 al×al+1×…×ar 为负的索引对 (l,r)(l≤r) 的数量。使得 al×al+1×…×ar 为正的索引对 (l,r)(l≤r) 的数量。输入格式第一行一个整数 n。第二行包含 n 个整数 a1,…,an。输出格式共一行,输出单个空格隔开的两个整数,分别表示负的索引对数和正的索引对数。数据范围1≤n≤2×105,−109≤ai≤109,ai≠0。输入样例1:55 -3 3 -1 1
2021-05-27 22:25:07 173
原创 c++对线性表的简单实现
#include<iostream>using namespace std;struct array{ int data[100]; int len=0;}; void add(array *a,int x){ a->data[a->len]=x; a->len=a->len+1; cout<<"add success"<<endl; } void insert(array *a,int idx,int c){
2021-05-27 17:01:40 101
原创 c++对链表的简单实现
#include<iostream>using namespace std;struct Node{ int val; Node *next; Node(){ val=-1; next=nullptr; } Node(int v,Node *n){ val=v; next=n; } Node(int v){ val=v; next=nullptr; }};Node* init(){ Node *head=new Node(); return
2021-05-27 17:01:00 85
原创 CSS(二)元素的margin或padding对布局的影响
div默认的padding和margin并不是0px,参看下面的文章所以在使用百分比布局时如果同一行的元素有默认的margin或padding的话,总百分比如果到了100%会跑到下一行。可以适当小一点,达到98%左右或更小,或者清除元素的margin和padding。...
2021-04-28 23:53:49 293
原创 CSS(一)vw、vh、%、px、rem的区别和使用场景
vw、vh是相对于视窗的单位,是相对单位。1vw相当与视窗宽度的1/100,1vh相当与视窗高度的1/100对宽度设置时%>vw,对高度设置时vh>%可以参考下面的一篇文章对字体进行设置大小时,使用rem可以使字体大小跟随界面大小的改变二改变。rem是相对于页面根元素html的大小来计算的。页面font-size默认是16px,可以通过下面来转换...
2021-04-28 22:44:51 857
原创 c++ txt读取
#include<iostream>#include<string>#include<fstream>using namespace std;int main(){ ifstream file; file.open("C://Users//86178//Desktop//aaa.txt"); if (!file.is_open()) cout << "open file failure" << endl;
2021-04-17 17:40:12 85
原创 最小生成树--Kruskal算法
最小生成树有两种解法一种是prim,也就是贪心,从第一个点A开始,找与之相连的边权最小的点B,然后再从B开始,找与B相连的边权最小的点…以此类推,时间复杂度n2所以prim适合求边和点比较少的图第二种就是Kruskal了,这个方法主要用到了并查集的思想,把每个点看成一个集合,先对所有的边按权重排个序,然后依次枚举每条边上的两个点是否属于同一个集合,如果不属于就合并两个集合,例题代码如下:#include<iostream>#include<algorithm>#inc
2021-04-15 10:06:52 230
原创 关于is_sorted与next_permutation的使用
is_sortedis_sorted()是algorithm库的一个函数,可以用来判断一段序列是否已经排好序,默认是排序是按照升序,即如果被判断的序列(可以是数组或vector)是升序的话返回true,如果想判断是否按降序排列,可以在在该方法的最后添加一个cmp函数。next_permutaion如果想要遍历所有的方案,需要参数数组或向量已经排好序,如果目标不是有序的,需要先sort一遍。...
2021-04-11 19:41:23 155
原创 第几个幸运数(优先队列+mp)
题目到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。前10个幸运数字是:3 5 7 9 15 21 25 27 35 45,因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505。去领奖的时候,人家要求他准确说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505是第几个幸运数字。解法一:暴力枚举#include<b
2021-04-10 11:26:47 223
原创 十进制数转罗马数字
#include<iostream>#include<string>using namespace std;int main(){ int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; string reps[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
2021-04-05 11:29:29 139
原创 算法笔记第一天-bfs
第一天第一题:递归实现组合型枚举#include<iostream>using namespace std;const int N=30;int n,m;int a[N];bool mark[N];void dfs(int x){ if(x==m){//结束条件 for(int i=0;i<m;i++)cout<<a[i]<<" "; cout<<endl; return;
2021-04-01 22:32:04 83
原创 Vue与Springboot和Mybatis的整理
1、ref与$refs属性给组件添加ref属性,可以通过$refs直接操纵dom元素,搭配使用。可以参考这个2、resetFields()与validate()resetFields()对整个表单进行重置,将所有字段值重置为初始值并移除校验结果validate()对整个表单进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。若不传入回调函数,则会返回一个 promise.3、输出提示信息this.$message.success(
2021-04-01 08:07:01 526
原创 简易四则运算模版(优点:可扩展)
#include<iostream>#include<string>#include<stack>#include<unordered_map>using namespace std;stack<int>st;stack<char>op;unordered_map<char,int>pr={{'+',1},{'-',1},{'*',2},{'/',2}};void eval(){ int b=st.
2021-03-22 21:01:10 122
原创 树状数组的应用(小朋友排队)
题目这题乍一看感觉就是一个逆序对的问题,和树状数组好像没有什么关系,毕竟树状数组的优势就只有动态的单点修改和区间查询,但是仔细推理还是可以发现关系的(反正我是发现不了。。。),因为这个题是求逆序对,我们其实只需要找到每个小朋友在他前面比他高的和在他后面比他矮的再计算即可。所以需要两步操作:(1)枚举每个小朋友(2)分别找出在他前面比他高的和在他后面比他矮的小朋友。之后就是数学公式了。第一步没什么好想的,主要是第二步,如何找出在他前面比他高的呢,这就可以用到树状数组了,(这里想了好久,我真笨)我们
2021-03-17 00:19:27 107
原创 c++读入一行数据
读入一行int(只知道读入一行,不知道具体的个数时使用) int t,i=0; while(cin>>t){ a[i++]=t; if(cin.get()=='/n')break; }读入一行string(当要读入的数据中含有空格时使用) string s; getline(cin,s);...
2021-03-10 20:42:09 2592 1
原创 机器人跳跃问题
题目二分这题是一道求最小值的题,一般求最小值的题都可以考虑用二分来做(y总)根据题目可以看出无论是向上还是向下跳跃能量变化都是一样的 ,设能量为E,则每跳一层能量的变化为E=2*E-h[i],其中h[i]是每层的高度,当E<0时就可以舍弃这个高度了,因为不满足要求,当E>1e5的时候可以直接判断当前高度是符合要求的(仅仅是符合要求,不一定是最终的答案,需要继续二分来找),因为如果E>1e5,那么往后的每次跳跃E只会越来越大。所以就可以得到代码了。```cpp#include&
2021-03-08 18:28:12 97
原创 火车进站
题目链接火车进站这道题乍一看很可能会看成求数字的全排列,我就是犯了这个错误。其实这题求得是符合一定条件的全排列,也就是说题目要求的输出序列只是全排列的一部分。那输出的序列需要满足哪些要求呢(=?=)其实我们可以通过模拟得出结果,通过模拟火车进站、出站可以将整个过程分为三个状态,在这里记为A,B,C,A代表已经出站的火车(也就是已经排好序的序列),B代表此时正在站中的火车,C代表还未进站的火车。可以发现,C中的数字一定是大于A或B中的数字的,假设我们已经放了k个数字,那么我们接下来只可以进行两种操作
2021-03-03 15:50:06 676 1
原创 八皇后
1432. 棋盘挑战给定一个 N×N的棋盘,请你在上面放置 N个棋子,要求满足:每行每列都恰好有一个棋子每条对角线上都最多只能有一个棋子 1 2 3 4 5 6 -------------------------1 | | O | | | | | -------------------------2 | | | | O | | | -------------------------3 | | | |
2021-01-22 20:31:44 153
原创 剪绳子(二分)
这个问题的难点就在于如何确定可以剪的最大长度,可以抽象为从一段连续的值中找到一个需要的值,因为绳子的长度是浮点数,所以用穷举法肯定是不行的,所以这题应该用二分法来考虑。#include<iostream>using namespace std;const int N=1e5;int a[N];int n,m;bool check(double len){ int ans=0; for(int i=0;i<n;i++){ ans+=a[i]/len
2021-01-17 17:09:02 290 1
原创 排序算法
1、冒泡法#include<iostream>using namespace std;int main(){ int n; cin>>n; int *an=new int[n]; for(int i=0;i<n;i++)cin>>an[i]; for(int i=n-1;i>=0;i--){ int flag=1;//如果在一次循环中没有发生交换则直接退出 for(int j=0;j<i;j++){ if(an[j]>.
2020-12-20 16:41:38 130 1
原创 判断一个数是不是素数的方法(C/C++)
int is_prime(int n){ if(n<=1)return 0; int m=float(sqrt(n)+0.5);//避免浮点误差 for(int i=2;i<=m;i++)if(n%i==0)return 0; return 1; }
2020-12-19 16:55:54 323 1
原创 c++分数化小数
#include<iostream>#include<cstdio>using namespace std;int main(){ int count=1; int a,b,c; while(cin>>a>>b>>c){ cout<<"case"<<count++<<":"<<a/b<<"."; a%=b; while(c--){ a*=10; int
2020-12-18 19:49:06 734 1
原创 FileReader的使用
共三种方法第一种:static FileReader fr; static FileWriter fw; public static void main(String[] args) { try { fr = new FileReader("C:\\Users\\86178\\Desktop\\SumField\\Java\\java整理\\java.txt"); fw = new FileWriter("C:\\Users\\86178\\Desktop\\SumField\\J
2020-12-15 16:38:48 336
原创 c++对AVL树的简单实现
#include<iostream>#include<queue>using namespace std;typedef class poinner* on;class poinner{//AVL树定义 public: int val; on left,right; poinner():val(0),left(nullptr),right(nullptr){} poinner(int val):val(val),left(nullptr),right(nullptr
2020-12-10 13:58:15 186
原创 c++对堆的简单实现
#include<iostream>using namespace std;typedef class poinner* on;class poinner{ public: int size;//当前尺寸 int capacity;//容量 int* poin;//数组指针 };on create(int Maxsize){//初始化 on h=new poinner(); h->size=0; h->capacity=Maxsize; h-&g
2020-12-09 11:50:18 201
原创 c++对树的简单实现
#include<iostream>#include<queue>#include<stack>using namespace std;class poinner{//树 public: int val; poinner*right,*left; poinner(int val){ this->val=val; right=nullptr; left=nullptr; }};poinner* create(int val){//初
2020-12-08 22:10:15 608 2
原创 利用栈实现进制转换(c++)
将十进制转换为八进制#include<iostream>#include<stack>using namespace std;int main(){ stack<int> p; int x; cout<<"请输入一个十进制的数字:"; cin>>x; while(x){ p.push(x%8); x/=8; } cout<<"该数字的八进制为:"; while(!p.empty()){ cout<
2020-11-30 19:16:59 609 1
原创 c++int转换为string
#include<iostream>#include<string>#include<typeinfo>#include<sstream>using namespace std;int main(){ int x; cin>>x; stringstream st; st<<x; string s=st.str(); if(typeid(s)==typeid(string))cout<<"scuess";
2020-11-24 19:08:54 207
原创 同时使用FileInputStream与FileOutputStream时需要注意的问题
当我们使用FileInputStream从文件一中读出数据并用FileOutputStream写入文件二时需要注意,(通过byte数组b)我们在进行写入操作时应该这样:byte[] b = new byte[512]; int len; FileOutputStream fout = new FileOutputStream("C:\\Users\\86178\\Documents\\360js Files\\temp1.txt"); while ((len = fin.read(b))
2020-11-12 17:26:58 648
原创 DataInputStream与DataOutputStream的使用
所以我们就不需要再关注具体读取的长度,只需关注读取的基本数据类型。当然,使用DataInputStream读取的文件内容需要是用DataOutputStream写入的。我们在使用时需要知道文件中储存的数据类型和储存的顺序,必须根据当时写入文件的顺序来一一对照着读取,不能跳过。在读取String类型时需要用readUTF()...
2020-11-12 16:46:39 185
原创 关于byte数组与String转换的问题
今天在使用io流时注意到如果用InputStream或它的子类读取文件时一般都是将数据保存到一个byte类型的数组中,FileInputStream fin = new FileInputStream(f); byte[] b = new byte[1024]; int len; StringBuffer s = new StringBuffer(); len = fin.read(b);//将读出的数据保存到byte数组中但是byte类型可以取到的范围非常有限,如图而且读到
2020-11-11 23:46:21 715
原创 用InputStream和Reader读取文件时的不同
读取用InputStream及其子类创建的流的文件时,用的数组为byte类型用最后一种方法可以避免输出空白字符(比如在向文件中追加内容时)读取用Reader及其子类创建的流的文件时,用的数组为char类型...
2020-11-11 17:45:29 142
原创 记录java程序运行的时间
long t1 = System.currentTimeMillis();————————————需检测时间的程序代码————————————long t2 = System.currentTimeMillis();t2-t1即为执行完程序所需时间
2020-11-11 17:27:15 107
原创 Java移动文件到指定的文件夹(关于对rename()方法的使用)
文件的移动主要是对rename()的使用1.rename(new File(“原路径//新文件名”))相等于重命名2.renam(new File(“新路径//原文件名”)相当于文件移动两种方式其实本质相同,都是将指定的文件移动到另一个地方,只不过第一种方式路径没变,名字变了;第二种路径变了,名字没变。所以并不是有两种使用方式。...
2020-11-11 16:35:14 527
空空如也
实际的前端开发时,外联的css样式如何写?
2021-05-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人