首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
算法笔记勘误 B1023
2024-09-04
【算法笔记】B1023 组个最小数
1023 组个最小数 (20 分) 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558. 现给定数字,请编写程序输出能够组成的最小的数. 输入格式: 输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0.数字 1.……数字 9 的个数.整数间用一个空格分隔.10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数
学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴趣,就记录一下自己的学习总结! 排序:将一些无序的元素按照某种规则排列的过程就叫"排序".在生活中,有时候可能是一些少量的数据 ,,,但是 ,也有可能是 一些的大数据 .排序是非常基础和重要的算法,有着广泛的理论基础和实践需求.(加粗部分摘自<算法笔记>原话!:-D) 一个排序
算法笔记--数位dp
算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置. 模板: ]; ll dp[][state];//不同题目状态不同 ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit/*数位上界变量*/)//不是每个题都要判断前导零 { //递归边界,既然是按位枚举,最低位是0,那么pos==-1说明这个数我枚举完了 )
算法笔记--lca倍增算法
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int o,int u,int w) { ,h[u]=h[o]+w; ;j<g[u].size();j++) { if(g[u][j]!=o) { anc[][g[u][j]]=u; ;i<;i++)anc[i][g[u][j]]=anc[i-][anc[i-][g[u][j]]]; dfs(u,g[u]
算法笔记--STL中的各种遍历及查找(待增)
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); while(it != m.end()) { //it->first; //it->second; it ++; } set: multiset<int>ss; multiset<int>::iterator it=ss.begin();//auto it,multiset元素可以
算法笔记--priority_queue
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int>>//less表示其他元素都比堆顶小 小顶堆:priority_queue<int,vector<int>,greater<int>>//greater表示其他元素都比堆顶大 less和greater容易混淆!!!
算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/luomingjun12315/article/details/45555495 sg[i]定义,从i走一步能到达的j的sg[j]以外的最小值,那么从sg函数值为x的状态出发,我们能转移到sg值为0,1,...,x-1的状态 对于某个人来说,0是他的必败态,sg[0] = 0 我们从这个状态出发,用d
算法笔记——C/C++语言基础篇(已完结)
开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引用,定会注明.本博客内容主要按照算法笔记内容进行学习.(2018-12-03) 1.万能头文件 #include<bits/stdc++.h> using namespace std;int main(){ ... return 0;} 2.判断素数 int IsPrime(int n){ ;i&
算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是一个奶牛的家.FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性.你首先要决定那些道路是需要保留的N-1条道路.第j条双向道路连接了牧场Sj和Ej(1 <= Sj <= N; 1 <= Ej <= N; Sj != Ej),而且走完它需要Lj的时间.没有两个牧场是被一
算法笔记(c++)--回文
算法笔记(c++)--回文 #include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { std::string s; ]; ,start,last; ],m=; getline(cin,s); //这里的temp保存了原字符值在原字符串的位置,可以借鉴下 ;i<s.length();i++) if(isalpha(s[i])) { temp[m]
算法笔记(c++)--完全背包问题
算法笔记(c++)--完全背包和多重背包问题 完全背包 完全背包不同于01背包-完全背包里面的东西数量无限 假设现在有5种物品重量为5,4,3,2,1 价值为1,2,3,4,5 背包容量为10 #include <iostream> #include<algorithm> using namespace std; int main() { ; ] = { ,,,,,}; ] = { ,,,,,}; ] = { }; ; i <= ; i++) ;j++) dp[j] =
算法笔记(c++)--关于01背包的滚动数组
算法笔记(c++)--关于01背包的滚动数组 关于01背包问题:基本方法我这篇写过了. https://www.cnblogs.com/DJC-BLOG/p/9416799.html 但是这里数组是N^2,据说滚动数组可以用1维来代替二维. 我想了想也没想通.干脆老方法,一步步列出来就懂了. 先上下滚动数组的代码,然后分析代码: dp[N];//这里只用一维的 ; i<=n; i++)//对每个数判断,可反 { for(int j=m; j>=weight[i]; j--)/ dp[j]=ma
算法笔记(c++)--01背包问题
算法笔记(c++)--经典01背包问题 算法解释起来太抽象了.也不是很好理解,最好的办法就是一步步写出来. 背包问题的核心在于m[i][j]=max(m[i-1][j],m[i-1][j-w[i]]+v[i])这个公式理解起来还是有点麻烦的特别我这种脑子笨的人.所以我先上段代码,然后那数据一步步分析就行了. 先上代码:代码稍微看看就行了,关键我下面的解释,走一遍就懂了. #include <iostream> #include<algorithm> using namespace
算法笔记(c++)--c++中碰到的一些用法
算法笔记(c++)--c++中碰到的一些用法 toupper(xxx)可以变成大写; tolower(xx)小写 isalpha(xxx)判断是不是字母 isalnum(xx)判断是不是数字 abs(xxx)绝对值 为了防止空格问题想要读取一行字符串可以用 getline()函数 string.substr(pos,len)获取从pos位置开始的后len长度的字符串 string.find("xx")获取xx第一次出现的位置 要是没找到返回-1 string.substr(pos)就
算法笔记(c++)--求一个数的所有质数因子
算法笔记(c++)--求一个数的所有质数因子 先贴题目: 这题不难,恶心在理解上面.最后看评论知道了怎么回事: 2*2*3*3*5=180 按照这逻辑的话应该输入的数由一系列质数相乘出来,所以每次找到一个质数就要更新下输入数.. 问题1: 没问题的话一瞬间都是这么想的.更新后重新来一遍for.重新探索一遍质数.但是仔细想想,题目要求从小到大,能2*3*2就一定能2*2*3,不如每次找到一个质数因子的时候,循环更新输入数. 解决如下 while(num%质数因子==0) num=num/质数因子.
算法笔记(c++)--桶排序题目
算法笔记(c++)--桶排序 记得题目是排序,输入n个1-1000的数字然后去重然后排序. 桶排序没毛病 #include<iostream> using namespace std; int main() { int N,n; cin>>N; ]=; while(N--) { cin>>n; a[n]=; } ; } 这样输入的同时就排序好了,到时候 if(a[i]==1) cout<<a[i] 就可以打印出排序好的内容了
算法笔记(c++)--使用一个辅助栈排列另一个栈
算法笔记(c++)--使用一个辅助栈排列另一个栈 仅仅使用一个辅助栈,不使用其他数据结构来排列一个栈,要求,上大下小. 分析下.肯定是先吧主栈中的数据都放到辅助栈中,在辅助栈中上小下大. 1.首先循环提取主栈中的top,如果辅助栈为空就直接放进去,如果比辅助栈顶小也直接放进去,如果比辅助栈顶大就把辅助站中元素一个个弹到主栈中,直到找到比栈顶小或者栈为空就放进去. 代码如下: #include<iostream> #include<queue> #include<string&
kNN算法笔记
kNN算法笔记 标签(空格分隔): 机器学习 kNN是什么 kNN算法是k-NearestNeighbor算法,也就是k邻近算法.是监督学习的一种.所谓监督学习就是有训练数据,训练数据有label标好(也就是分类分好的).kNN的思路是,对于需要测试的数据,把它和训练集中的每个数据都进行距离计算,距离最近的前k个结果中,所对应的label出现次数最多的,就是这个测试数据所属的label(类别). kNN一般步骤 按照<machine learning in action>一书中的通用步骤走一遍
算法笔记_041:寻找和为定值的多个数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题是典型的背包问题的应用,即先找出n个数的所有组合,再在这些组合中寻找组合数相加之和等于sum的组合,并依次输出这些组合中的数. 具体代码如下: package com.liuzhen.array_2; public class ManySumN { /* * 函数功能:以字符串形式返回1~n个数的所
算法笔记_023:拓扑排序(Java)
目录 1 问题描述 2 解决方案 2.1 基于减治法实现 2.2 基于深度优先查找实现 1 问题描述 给定一个有向图,求取此图的拓扑排序序列. 那么,何为拓扑排序? 定义:将有向图中的顶点以线性方式进行排序.即对于任何连接自顶点u到顶点v的有向边uv,在最后的排序结果中,顶点u总是在顶点v的前面. 2 解决方案 2.1 基于减治法实现 实现原理:不断地做这样一件事,在余下的有向图中求取一个源(source)(PS:定义入度为0的顶点为有向图的源),它是一个没有输入边的顶点,然后把它和所有从它出发
热门专题
python excel 批量更新数据库
three 雾 效果
oracle行列转换函数
centos防火墙加ip白名单
php传值必须整型 防止变成科学计数法
win10选择系统多一项
MySQL查询由姓名5个字母组成
pdf逆向搜索vscode失败
洋葱路油器手机版下载 暗网
rpm打印所有安装记录
netsh 查询端口
sqlservercheck约束性别
springboot cors error解决
输入一个字符串,长度小于等于200 输出按字符顺序
vc ado 连接远程oracle配置
hbase 读数据导致写下降
c# XmlSerializer 多重
tf中relu6使用代码
windows怎么颁发证书给linux
找出dataframe每一列的均值最小值最大值