- 博客(24)
- 资源 (4)
- 收藏
- 关注
原创 九数组分数
这是一道填空题 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码。#include<stdio.h>void test(int x[]){ int a = x[0]*1000 + x[1]*100 + x[2]*10 +x[3]; int b = x[4]*10000 + ...
2018-02-28 20:18:54 1633
原创 解救人质(BFS)
不同于由递归生成的深度优先搜索,广度优先搜索(又叫宽度优先搜索)使用的是“一层一层”扩展的方法。问题1:解救人质这里使用一个队列来模拟搜索的过程struct note{ int x; int y; int s;//步数};struct note que [2501];//地图大小不超过50*50,因此队列扩展不会超过2500个。int hea...
2018-02-25 16:04:23 542
原创 深度优先搜索(DFS)
问题1:n个盒子分别放n个数字 有哪些方法?#include<iostream>using namespace std;int book[10],a[10],n;void dfs(int step) //step表示当前站在盒子前的序号{ if(step == n+1) { for(int i=0;i<n;i++) ...
2018-02-25 12:47:09 234
原创 回溯 ——八皇后问题
八皇后问题: 在8*8的棋盘上,放置8个皇后,使两两之间互不攻击。满足: 1).不在同一列 2).不在同一行 3).不在同一对角线回溯算法: 确定了解空间的组织结构后,回溯法从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成...
2018-02-24 18:02:41 872 1
原创 递归——汉诺塔问题
引:递归求阶乘 用递归算法求n! 定义函数fact(n) = n! 则有fact(n) = n*fact(n-1) 已知fact(1) = 1为了表达得更直观清晰,定义两个结点:“或结点”和“与结点”。 1. 或结点如图9.1所示,图中A为“或结点”,A依据不同的条件会有两个不同的取值B或C。 2. 与结点如图9.3所示,与结点要涂黑,相关联的B与C之间要用...
2018-02-10 23:29:27 539
原创 C 链表
链表中每一个结点都由两个部分组成。左边的部分用来存放具体的数值,用一个整形变量就可以; 右边的部分需要存储下一个结点的地址,可以用指针来实现(也称为后继指针)。 这里我们定义一个结构体类型类存储这个结点。typedef struct node{ int data; //整形data,用来存储具体的数值 struct node *next; //指针next,用来存...
2018-02-10 13:19:36 288
原创 malloc、free函数
malloc():从内存中申请内存空间 malloc函数的作用是从内存中申请分配制定字节大小的内存空间,需要include< stdlib.h>头文件。若要对申请的空间进行操作:需要用一个指针来指向这个空间,即储存这个空间的首地址。malloc(sizeof(int)); //从内存中申请了4个字节的空间来准备存放一个整数。int *p;p = (in...
2018-02-10 12:12:26 218
原创 栈于队列的应用——钓鱼
每个人的手牌是一个队列,出牌即出队,赢牌即入队。struct queue{ int data[1001]; int head; int tail;};桌子是一个栈,先进后出。struct stack{ int data[10]; int top;};这个题的重点是要用一个book数组记录当前桌子上的牌,寻找桌子上是否有与打出...
2018-02-09 23:48:22 511
原创 C 栈
初始化栈:top = 0; 入栈:top++;s[top] = x;对于奇偶不同的情况,中间位置往往相同,不同的是需要设置不同的next。比较一个数组自己的某部分与另一部分,需要复制这个数组。判断回文#include<iostream>#include<cstdio>#include<cstring>#define maxn 1000...
2018-02-08 18:32:56 620
原创 C 队列
队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,称为“出队”,在队列的尾部(tail)进行插入操作,这称为“入队”。当队列中没有元素时(head = tail),称为空队列,符合先进先出(First In First Out,FIFO)原则。head:队首 tail: 队尾的下一个位置(当队列中只剩下一个元素时,队首和队尾重合会带来一些麻烦)对于队列的操作: 1
2018-02-07 20:03:29 330
原创 算法竞赛 例6-2铁轨(UVa 514)
Sample Input 5 12345 54123 0 6 654321 0 0 Sample Output Yes No Yes下面代码并不能按照题述输入输出格式输出。问题在于不知道如何处理这个0#include#include#includeusing namespace std;const
2018-02-06 23:04:25 263
原创 C++ 栈 例5-5集合栈计算机(UVa12096)
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 push(): 向栈内压入一个成员; pop(): 从栈顶弹出一个成员
2018-02-06 21:46:45 552 1
原创 Anaconda安装jieba、wordcloud等第三方库
本文是jieba在anaconda中的安装方法,wordcloud等第三方库与jieba安装方法相同,这里是wordcloud包的下载地址许多论坛中说使用conda install jieba安装,我的尝试是不可行的。我发现jieba作为一个第三方库,并不存在于anaconda内置的packages中。本文使用的是Mac,windows下的安装基本一致。在官网中下载jieba压缩...
2018-02-04 17:30:50 62885 33
原创 C++ 映射:map 例5-4 反片语(UVa 156)
map就是从键(key)到值(value)的映射。因为重载了[]运算符,map像是数组的“高级版”。例如可以用一个mapmonth_name来表示“月份名字到月份编号”的映射,然后用month_name[“July”] = 7这样的方式来赋值。例5-4反片语 输入一些单词,找出满足如下条件的单词:该单词不能通过字母重排,得到文本中的另一个单词。在判断是否满足条件时,字母不分大小写,但
2018-02-03 21:46:28 367
原创 C++ 集合:set 例5-3 安迪的第一个字典(UVa 10815)
集合与映射也是两个常用的容器。set就是数学上的集合,每个元素最多只出现一次。 set的元素 会按照操作符和sort一样,自定义类型也可以构造set,但同样必须定义“小于”运算符。int main(){ setchar> dict; string buf,buf1; buf = "asds"; for(int i=0;i<buf.length();i++)
2018-02-03 19:07:51 434
原创 C++ 不定长数组vector 例5-2木块问题(The Blocks Problem,UVa 101)
vector就是一个不定长数组。不仅如此,它把一些常用的操作“封装”在了vector类型内部。 若a是一个vector,可以用以下语句直接对vector进行操作 a.size() a.resize() a.push_back() a.pop_back() 读取大小 改变大小 向尾部添加元素 删除最后一个元素vector是一个模板,所以需要用
2018-02-03 16:44:43 485
原创 C 计算内存地址间的差
首先引进遇到的问题 输出可以发现a[0]与a[1]的地址相差4(int占4个字节),那么有个问题:a[0]与a[1]的地址相差是4吗?这里需要引入一个概念 直接用内存地址相加减,通常用来计算内存的偏移量。 如果内存地址不是在同一块连续的内存块中,那么计算的结果就是字节数,但是这样的计算基本是无意义的。 如果是同一块连续的内存块中的地址计算,就是数组的偏移量。
2018-02-03 00:20:43 3283 2
原创 C++ lower_bound 算法竞赛 例5-1 大理石在哪儿(UVa 10474)
lower_bound查找大于或等于x的第一个位置。输入n个大理石,q个问题;每个问题问是否有一个大理石写着整数x,如果有回答是哪个 【样列输入】 4 1 2 3 5 1 5 5 2 1 3 3 3 1 2 3 【样列输出】 CASE# 1: 5 found at 4 CASE# 2: 2 not found 3 ...
2018-02-03 00:14:01 356
原创 C++ 模版
回顾c语言sum函数int sum(int *begin,int *end){ int *p; int ans = 0; for(p = begin;p!=end;p++) ans+=*p; return ans;}回顾之前定义的结构体Point C++ 结构体 这个函数比较局限,只能求整数数组的和,不能求double,更不能求Po
2018-02-02 22:55:07 121
原创 C++ 结构体
回忆一下c中结构体变量的定义typedef struct{double x,y;}Point;double list(Point a,Point b){ return hypot(a.x-b.x , a.y-b.y);}上述c代码用typedef的方式定义有两个元素x,y的结构体Point。C++#include using namespace std
2018-02-02 22:21:29 335
原创 C++ getline()
例:输入数据的每行包含若干个以空格隔开的整数,输出每行中所有整数之和。#include #include #include #include using namespace std;int main(){ string line; while(getline(cin,line)) { int sum = 0,x; stri
2018-02-02 21:31:01 503
原创 算法竞赛 例4-3救济金发放(The Dole Queue,UVa 133)
n(n逆时针编号为1~n。有两个官员,A从1开始逆时针数,B从n开始顺时针数。在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上)。接下来被官员选中的人(1个或者2个)离开队伍。 输入n,k,m输出每轮里被选中的人的编号(如果有两个人,先输出被A选中的)。例如,n=10,k=4,m=3,输出为4 8, 9 5, 3 1, 2 6, 10, 7。注意:输出
2018-02-01 17:16:29 422 1
原创 算法竞赛 例4-2 刽子手游戏(Hangman Judge,UVa 489)
猜单词中的字母,有这个字母就继续猜,错的次数有限制 【输入】 会有好几组测试数据,每一组有3列。第一列为一个数字n,代表第几回合,第二列为这一回合的答案,第三列为这一回合玩家输入的猜测。如果n = -1代表输入结束。 【输出】 输出每一回合及游戏结果。游戏结果只有三种可能: You win. You lose. You chickened out.
2018-02-01 13:18:39 634
原创 C语言 递归中的段错误与栈溢出
C语言中,每次递归调用都会多一个栈帧——和普通的函数调用并没有什么不同。由于使用了调用栈,C语言自然支持了递归。在C语言的函数中,调用自己和调用其他函数并没有任何本质区别,都是建立新栈帧,传递参数并修改当前代码行。在函数体执行完毕后删除栈帧,处理返回值并修改当前代码行。递归调用时新建了一个栈帧,并且跳转到了函数开头处执行,同一时刻可以有多个栈帧,但“当前代码行”只有一个。“段”(segme
2018-02-01 10:05:15 3278
2019蓝桥杯.zip
2019-11-12
调用sklearn库的K-Means聚类分析实例
2018-01-26
python爬取淘宝商品信息
2018-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人