- 博客(39)
- 资源 (3)
- 收藏
- 关注
原创 解答树后项添加的过程中因为存在分支,所以你想的一个排列不一定在你要的分支路径上,虽然已有的排列可能满足条件Uva129(TMDTMDMTMD)从九点到早上四点终于干翻了,主要集中输出格式递归迭代算法
//有时候遇上往后缀添加任何字母都不合适的情况//递归迭代的实质是从一个点调到另外一个点,所以需要先输入一个点//放心,递归遍历所有字串一定是按照字典序排列的,你所关心的已经改是怎样剪枝回溯的问题//编程细节只有ac之后你才会发现,所以对一个题,一定亲自ac掉。//Uva 129困难的串#include#includeusing namespace std;
2016-09-27 04:28:03 235
原创 解答树问题可分为子集生成和排列生成问题,都可以用回溯法解决并且是很优化的方案
//dfs变成回溯的方法只需要把处理的过程再在dfs的下面初始化一遍就行,当然这会影响一棵子树但是对于他的平行树这个就是一种相同的回溯状态//递归枚举完成的是排列所以要从第一个要排列的数开始,一般是数组的第零位,但是如果之前几位已经拍好了就实际没有拍好的进入,比如说Uva524 的第零位已经被一占了就从第二位1开始search//我日,这题有毒,自己没有说明输出格式还让人来
2016-09-25 23:55:53 407
原创 递归枚举,子集生成,排列生成,回溯都是解决解答树的方法,通过数值跟踪保存排序过程
//虽然解答树和一般树都需要用递归来解决,但是解答树和一般树比如二叉树多叉树图转多叉树不同的是,解答树通过递归枚举进行元素重组排列最终获得的是一个排列或者集合,没有树状结构,他需要引入根节点但是通过if else 进行结束条件的判定和结果的输出;而一般树通过递归查找获得子节点,一般树具有明显的树状的数据结构,引入根结点通过判断空树结束//解决解答树的方法:递归枚举,子集生成,排列生成,回溯
2016-09-25 22:18:00 440
原创 (子集生成算法)
#include#includeusing namespace std;//子集生成算法 //增量构造法 void aprint_subset(int n,int*A,int cur){ for(int i=0;i printf("%d ",A[i]); printf("\n"); int s=cur? A[cur-1]+1:0;
2016-09-25 16:51:52 329
原创 (排列生成算法)枚举排列的两种方法:递归枚举和next_permutation (使用多用next_permutation)
#include#include#includeusing namespace std;//枚举排列的两种方法:递归枚举和next_permutation int shz[1000];//生成 1~n 排列void print_permutation(int n,int*A,int cur){ if(cur==n){ for(int i=
2016-09-25 16:35:40 310
原创 //枚举之前一定要预处理,比如数学方法处理枚举起点和终点 Uva10976
#include#include#includeusing namespace std;//枚举之前一定要预处理,比如数学方法处理枚举起点和终点 vector vect;int main(){ int k,x,y; while(cin>>k){ vect.clear(); for(y=k+1;y
2016-09-25 15:57:01 266
原创 枚举起始点Uva11059注意一个元素也是子序列
//目前枚举的情况有:枚举各个位Uva725注意有前置0时用乘法;枚举起始点Uva 11059注意一个元素也是一个子序列所以k>=i k#include#include#includeusing namespace std;int shz[20];int main(){ int a,time=0; while(cin>>a){ for(
2016-09-25 14:34:00 144
原创 枚举法Uva725
//输出格式中两个输出之间有空格的要求是for i 记录次数,if(i) 打印空格//枚举法注意枚举量的处理需要预处理,枚举法一般是solve方法设计//Uva725#include#include#includeusing namespace std;int main(){ int a; for(int num=0;;num++){
2016-09-25 12:51:32 405
原创 //递归建树,bfs,dfs的关键是引入处理根节点,空树条件(结束条件),遍历子节点作为根节点
//有些图可以转换成树来分析,树和图有相似性,束河链表有相似性//构建树的实质:读取一个子树(有根结点),如果它不是空树(无根节点)就把根节点加入树结构,要的是找到子树的结构和空树的条件return//建立数组vector的多叉树//图转数值vector的多叉树
2016-09-25 02:08:47 694
原创 c/c++
#预处理指示符预处理宏assert内存泄漏指的是程序不具有某块内存的指针指针和动态内存分配类构造函数,函数重载,析构,引用,基类(父类,超类),派生类(子类)双冒号 :: 操作符被称为域操作符 scope operatorprotected private public//头文件#ifndef IntArrayRC_H #define IntArrayRC_H
2016-09-24 18:41:27 217
原创 数据结构小结(做一道题之前先想一下数据结构设计,然后向solve方法设计(bfs,dfs))
到目前为止学习的数据结构包括1.数组保存数据(vector)建立二叉树,图,链表2.struct结构体结构指针构图,打包对象属性(int)作为映射的对象3.vector保存顺序,分配编号,保存输出,建立图4.set查重,排序5.map映射6.queue队列先进先出整理队列(deque双端队列插入方便和迭代访问,primary_queue优先队列自定义排序方式)7.s
2016-09-24 04:42:32 278
原创 图(领接矩阵和vector)的dfs和bfs
//Uva572 图的dfs求连通块#include#include#includeusing namespace std;int m,n;int dir[8][2] = {{-1,0},{-1,1},{0,1},{1,1}, { 1,0},{1,-1},{0,-1},{-1,-1}};bool vis[105][105];cha
2016-09-24 04:21:18 542
原创 非二叉树Uva297四分树
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep
2016-09-24 03:58:52 220
转载 树状数组读取建立二叉树和结构指针读取建立二叉树
//树状数组和双向链表完全不同,树状数组围绕根节点建立双线链表,每个节点保存左右子节点,双向链表保存每个节点两端的节点,但是开头有两个,分别为最后一个元素和第一个元素,但是他们都是以数字为基础的//树状数组读取建立二叉树Uva548 二叉树的递归遍历dfs//二叉树的先序遍历 根左子树右子树;//二叉树的中序遍历 左子树根右子树;//二叉树的后序遍历 左子树右子树根;/
2016-09-24 03:48:40 412
转载 二叉树的树状数组和双向列表有区别,一个是针对明显的树状结构,一个是可以用来表示树状结构,Uva122
//程序设计思路,建立数据结构,解决问题//数据结构新增链表(单向,双向),树的结构指针实现和数组实现//二叉树的层次遍历BFS,树状结构结构指针实现和数组实现。//一个二叉树包括一个根节点和两个子节点。#include#include#include#include#include#includeusing namespace std;
2016-09-23 02:47:31 451
原创 树状结构-完全二叉树的编号-树状数组Uva Dropping Balls
//TLE版本#include#include#includeusing namespace std;int shz[1//测试数据量超过一千一般不用模拟,会很费时间 //树的编号 //树状数组;结构指针树 //二叉树在数组里面是分层保存的(下标),第一层一个数值(1),第二层2个(2,3),第i1<<(i-1) 个数值(下标1<<(i-1)+1 到 1
2016-09-23 01:40:54 285
原创 顺序结构改变元素位置用链表UvaBroken Keyboard //Uva boxes in a line
#include#include#includeusing namespace std;//每输入一个字符,就插入到单向链表中,cur表示插入的前一个元素,name[cur] 表示插入的后一个元素 //last 记录返回执行home键前的状态// 注意单向列表必须要有零位作为虚拟节点,最后以0结束表示无节点//每个下标代表一个节点//我错了,我题目都理解错了
2016-09-22 23:14:10 212
原创 struct自定义数据结构部分代替pair,vector,map的功能(数组连用)Uva Matrix Chain Multiplication
//到现在使用最多的map映射到vector map set 作为哈希表//set查重,用vector保存顺序//vector保存数据分配数字标记//自定义struct打包pair和某些属性,记得初始化方法//stack处理后进先出,字符串//string和vector连用,保存数据,获得一行和一个字符串再for遍历//queue保存队列,先进先出,一般用deque代替
2016-09-22 03:27:43 424
原创 flag 推进比较决策段过程用while(B<=A) Uva Rails
//注意输出格式//栈模拟flag推进比较决策#include#include#includeusing namespace std;int a,shz[1005];int main(){ while(cin>>a&&a){ while(scanf("%d",&shz[1])&&shz[1]){
2016-09-21 12:36:25 286
原创 队列数组存储Uva Concurrency Simulator
//使用queue处理队列,使用queue【】 存储队列//注意 The outputs of two consecutive cases will be separated by a blank line.表示头尾无空格//花了四个小时啊//读取case数//初始化 //读取程序数建立que[] 保留每个程序 并用deque保留等待队列,//执行等待队列,使用queu
2016-09-21 03:47:44 184
原创 智障题 Uva Patties
#include#include#include#include#includeusing namespace std;map > mp;int main(){ int a,b,c,d,e,f; cin>>a>>b>>c>>d>>e>>f; cout return 0;}
2016-09-20 04:02:31 178
原创 Uva Foreign Exchange map 映射
//注意每两个城市之间有两条有向边,城市可以为奇数比如说五个//遍历map使用迭代,it->first,it->second//啃了两个半小时,处理细节#include#include#include#include#includeusing namespace std;map > mp;int main(){ int a,b,c;
2016-09-20 03:44:42 209
原创 queue模拟(Uva Throwing cards away I)
//简单到爆的水题,注意deck顺序就行//presentation error检查题目要求格式,是否空格//TLE 检查数据结构搜索的密度#include#include#includeusing namespace std;queue que; int main(){ int a,b; while(cin>>a&&a){
2016-09-19 15:52:33 162
原创 Uva Ducci Sequence(map映射的哈希表)
//map映射的哈希表,因为设置的哈希表的疏密程度显著影响查找的时长,比如说下面两个一个用了1190ms一个3000ms超时//队列存储,循环取第一个放到后面,差放在后面//遍历判断,全为0终止//不全为0 #include#include #include#include#include#include#includeusing namesp
2016-09-19 14:40:19 235
原创 Uva Alignment of Code
// 注意读题 ,对于without trailing and leading spaces, 需要注意空格有影响//数组数值纵向比较用max//Uva丑数 队列从小到大顺序访问,set排重//读取一行,读取每个并记录当前位置并检查是否大于已有标准vector的元素个数,大就push,小就比较对应,大就替换;//获得vector模板后按照模板输出;#include#in
2016-09-18 23:24:10 193
原创 离散化Uva221 Urban elevations
//一直卡在格式上,看英文真心头疼,读题看输入处理分析,输出格式solve方法,一定注意输出格式,认真读题//离散化连续坐标方法 Uva urbanelevation//数据结构设计 vector set==vector map==vetor[]string==vector[]struct==vector[]int==vector queue==vector stack UvaPG
2016-09-17 23:56:52 246
转载 The letter Carrier's Rounds(Uva 814)
#include using namespace std;void parse_address( string &s, string &user, string &mta)//分割字符{ int k=s.find('@'); user=s.substr(0,k); mta=s.substr(k+1);}int main(){ int
2016-09-17 19:17:10 282
原创 PGA Tour PRize Money(Uva 207)
//生无可恋,看的别人的代码,有时间理解#include#include#include#includeusing namespace std;const int maxn=145;int n,pos;double sum,pri[maxn];struct player{ char name[25]; double prize; bool amateur
2016-09-16 22:22:10 261
原创 Database(Uva1592)
//使用map,int> 注意map查找比较字符串真心慢,建议用数字添加map,下面就是使用string添加造成比另外一个多出一倍时间//字符串转数字表示同 集合栈计算机#include#include#include#include#include#include using namespace std;vector shz[10005];map,i
2016-09-15 18:27:37 213
原创 Unix is(Uva 400)
#include#include#include#include#include#include using namespace std;string shz[100+5]; int a;void display(){ for(int i=0;ia;i++)coutshz[i]endl;}int main(){ while(cin>>a){ int m=0; fo
2016-09-15 18:22:31 441
原创 c++头文件的编写
//定义头文件和声明类,但是没有给出实现的具体方法,在项目中会编译链接到所需要的方法中#ifndef CXG_H#define CXG_H#include //自定义库文件函数using namespace std;class print{ public: void welcome(); private: str
2016-09-13 00:57:14 283
原创 matlab基本编程
%%%%%%%%%%%%%%%%%%%%for a=1:9 %水仙花数 for b=0:9 for c=0:9 if a^3+b^3+c^3==a*100+b*10+c*1 disp(a*100+b*10+c*1); end end endend
2016-09-13 00:27:34 226
原创 机器学习
机器学习在监督学习的过程中,我们只需 要给定输入样本集,机器就可以从中推演出指定目标变量的可能结果,监督学习相对比较简单, 机器只需从输入数据中预测合适的模型,并从中计算出目标变量的结果。监督学习一般使用两种类型的目标变量:标称型和数值型。标称型目标变量的结果只在有 限目标集中取值,如真与假、动物分类集合{ 爬行类、鱼类、哺乳类、两栖类、植物、真 菌 }; 数值型目标变量则可以从无限的数值集合
2016-09-05 10:19:41 429
原创 is it a tree(uva 165)
//并查集版本(RE)#include#include#includeusing namespace std;const int m=10;int node[m],used[m];int rootOf(int a){ if(a!=node[a]) node[a]=rootOf(node[a]); return node[a]
2016-09-05 10:17:08 186
原创 机器学习导论
机器学习通过以往数据和实例训练学习系统,优化参数使得更智能密度估计,分类和回归的参数方法 非参数方法 多元方法维度归约(向前向后选择)处理属性聚类分析处理实例 图形压缩主动学习自动生成实例决策树是一种实现分治策略的层次数据结构 非参数学习方法 用于分类和回归构造分类树P132学习线性判别式 支持向量机 费希尔线性判别式 感知器多层感知器是一种人工神经网络
2016-09-03 03:09:23 803
原创 人工智能
人工智能基础:知识表示,推理方法,机器学习 计算机科学,控制论,信息论,神经生理学,心理学,语言学专家系统人工智能是模拟人的智能计算机应用:认识和理解世界环境的能力,提出概念建立方法进行演绎和归纳推理做出决策的能力,学习能力,自我适应能人工智能的目标是搞清楚实现人工置鞥的有关原理,是计算机更智慧聪明有用人工智能的研究核心为搜索策略:求任一解路:回溯法,爬山法,宽搜,深搜
2016-09-02 23:45:38 1978
原创 数据挖掘方法
//数据挖掘基础数据挖掘基础:统计学,人工智能,机器学习,模式识别,神经网络,知识库系统,信息检索,高性能算法和可视化数据类型:科学数据,医疗数据,人口统计数据,金融数据,销售数据数据挖掘工作原理,自动分析,分类,汇总数据,发现和描述数据中的趋势,标记异常数据挖掘是信息时代的产物数据存储结构 数据仓库(数据清理,数据集成,联机分析处理OLAP)数据挖掘是从大量数据中挖掘有趣
2016-09-02 21:55:05 1361
原创 大数据成果(发展和未来)
/////////////////////世界就是数据/////////////以云计算为基础的信息存储、分享和挖掘手段,可以便宜、有效地将这些大量、高速、 多变化的终端数据存储下来,并随时进行分析与计算。大数据与云计算是一个问题的两面:一 个是问题,一个是解决问题的方法。通过云计算对大数据进行分析、预测,会使得决策更为精 准,释放出更多数据的隐藏价值。数据,这个21世纪人类探索的新边疆,正在
2016-09-01 03:40:26 1909
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人