算法基础
Janton Wang
这个作者很懒,什么都没留下…
展开
-
6.分数化小数
问题: 输入正整数a, b, c,输出a/b的小数形式,精确到小数点后c位。a,b<=106,c≤100a, b <= 10^6,c \le 100a,b<=106,c≤100。输入包含多组数据,结束标记为 a=b=c=0a=b=c=0a=b=c=0。 主要是 double 只有 16 位有效数字。 参考其他博客 解决如下: #include <stdio....原创 2018-11-29 21:07:50 · 286 阅读 · 0 评论 -
15.大理石在哪儿(Uv10474)
问题: 输入n个整数,代表大理石编号;再输入q个数(编号),问是否有这个编号的大理石,位置在哪里? 输入: 4 1 2 3 5 1 5 5 2 1 3 3 3 1 2 3 输出: Sample Output CASE# 1: 5 found at 4 CASE# 2: 2 not found 3 found at 3 解决: #include <iostream> #include &...原创 2018-12-06 23:21:34 · 249 阅读 · 0 评论 -
20.大整数类
#include<iostream> #include<vector> #include<queue> #include<cstring> #include<iostream> #include<cmath> #include<string> // >> using namespace原创 2018-12-09 16:47:36 · 174 阅读 · 0 评论 -
21.铁轨(UVa514)
问题: 某城市有一个火车站,铁轨铺设如下图。有n节车厢从A方向驶入车站,按进站顺序编号1~n。出栈顺序是(5,4,1,2,3)是不可能的,但是(5,4,3,2,1)可以。现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,可以借助中转站C。C是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移入C,就不能再回到A了;一...原创 2018-12-11 22:04:49 · 324 阅读 · 0 评论 -
22.矩阵链乘(UVa442)
问题: 输入n个矩阵的维度和一些矩阵的链乘表达式,输出乘法的次数。如果乘法无法进行,输出error。假定A是mn矩阵,B是np的矩阵,那么AB是mp的矩阵,乘法次数为mnp。如果A的列数不等于B的行数,则乘法无法进行。 例如,A是5010的,B是1020的,C是205的,则(A(BC))的乘法次数为10205(BC的乘法次数)+5010*5=3500. 输入: 3 A 50 10 B 10 20 ...原创 2018-12-11 23:31:52 · 422 阅读 · 0 评论 -
23.小球下落(UVa679)
有一棵二叉树,最大深度为D,且所有的叶子深度都相同。所有结点从上到下从左到右编号为1,2,3,…,2D−11,2,3,…,2^D-11,2,3,…,2D−1。在结点1处放一个小球,它会往下落。每个结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点的开关关闭,则往上走,否则往下走,直到走到叶子结点,如下图所示。一些小球从结点1处依次开...原创 2018-12-12 00:20:46 · 256 阅读 · 0 评论 -
25.树(UVa548)
问题: 给一棵点带权(权各不相同,都是正整数)二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。如果有多解,该叶子本身的权应尽量小。 输入: 3 2 1 4 5 7 6 3 1 2 5 6 7 4 输出: 1 #include<iostream> //getline(cin, line) #include<string> #include<sstream...原创 2018-12-18 12:51:58 · 237 阅读 · 0 评论 -
28.旅行(UVa1347)
#include<cstdio> #include<cmath> #include<algorithm> using namespace std; const int maxn = 50 + 5; double x[maxn], y[maxn], dist[maxn][maxn], d[maxn][maxn]; int main() { int n; w...原创 2019-06-06 15:35:01 · 177 阅读 · 0 评论 -
26.城市里的间谍 (UVa1025)
某城市的地铁是线性的,有n(2≤n≤50)n(2≤n≤50)n(2≤n≤50)个车站,从左到右编号为1~n1~n1~n。有M1M1M1辆列车从第1站开始往右开,还有M2M_2M2辆列车从第nnn站开始往左开。在时刻000,Mario从第1站出发,目的是在时刻T(0≤T≤200)T(0≤T≤200)T(0≤T≤200)会见车站nnn的一个间谍。在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,...原创 2019-06-01 23:41:36 · 190 阅读 · 0 评论 -
插入排序
#include<iostream> using namespace std; void insertion_sort(int* a,int& len) { int i, j, key; for (j = 1; j < len; j++) { // 插入排序从索引1开始,默认索引0已经排序好 key = a[j]; // 拷贝下待插入值 i = j - 1...原创 2019-06-02 14:57:09 · 120 阅读 · 0 评论 -
27.巴比伦塔(UVa 437)
有n(n≤30)n(n≤30)n(n≤30)种立方体,每种都有无穷多个。要求选一些立方体摞成一根尽量高的柱子(可以自行选择哪一条边作为高),使得每个立方体的底面长宽分别严格小于它下方立方体的底面长宽。 #include <iostream> #include <stdio.h> #include <cstring> #include <algorithm&...原创 2019-06-03 16:47:03 · 358 阅读 · 0 评论 -
归并排序
#include <stdio.h> #define LEN 8 int a[LEN] = { 8, 7, 6, 5, 4, 3, 2, 1 }; void merge(int start, int mid, int end) { int n1 = mid - start + 1; int n2 = end - mid; int left[n1], right[n2]; in...原创 2019-06-03 11:00:16 · 112 阅读 · 0 评论 -
根据前序和中序遍历结果构造二叉树
//binarytree.h #ifndef BINARYTREE_H #define BINARYTREE_H typedef struct node *link; struct node { unsigned char item; link l, r; }; link tree_init(unsigned char VLR[], unsigned char LVR[], int n); ...原创 2019-06-09 10:19:37 · 552 阅读 · 0 评论 -
排序二叉树
/* bst.h */ #ifndef BST_H #define BST_H typedef struct node *link; struct node { unsigned char item; link l, r; }; link search(link t, int key); link insert(link t, int key); link delete(link t, ...原创 2019-06-09 11:51:41 · 216 阅读 · 0 评论 -
折半查找
#include <stdio.h> #define LEN 8 int a[LEN] = { 1, 3, 3, 3, 4, 5, 6, 7 }; int binarysearch(int number) { int mid, start = 0, end = LEN - 1; while (start <= end) { // 当start = end时候,还不是要找的...原创 2019-06-03 16:29:41 · 191 阅读 · 0 评论 -
走迷宫--深度优先搜索--堆栈
#include <stdio.h> #define MAX_ROW 5 #define MAX_COL 5 struct point{ // 坐标堆栈 int row, col; } stack[512]; int top = 0; void push(struct point p){ // 坐标入栈 stack[top] = p; top++; } struct ...原创 2019-06-03 22:38:47 · 256 阅读 · 0 评论 -
走迷宫--广度优先搜索--队列
#include <stdio.h> #define MAX_ROW 5 #define MAX_COL 5 struct point { int row, col, predecessor; } queue[512]; int head = 0, tail = 0; void enqueue(struct point p){ // 迷宫位置入队列 queue[tail]...原创 2019-06-04 09:45:13 · 451 阅读 · 0 评论 -
14.刽子手游戏(Uva489)
问题: 游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母。 如果单词里有那个字母,所有该字母会显示出来;如果没有那个字母,则计算机会在一幅“刽子手”画上填一笔。 这幅画一共需要7笔就能完成,因此你最多只能错6次。 注意,猜一个已经猜过的字母也算错。 在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、 输了(You lose.)还是放弃了...原创 2018-12-06 20:19:49 · 219 阅读 · 0 评论 -
13.猜数字(Uva340)
问题: 实现一个“猜数字”的游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)。输入包含多组数据,每组输入第一行为序列长度n,第二行是答案序列,接下来是若干行猜测序列。猜测序列全0时该数据结束。n=0时输入结束。 样例输入: 4 1 3 5 5 1 1 2 3 4 3 3 5 6 5 5 1 6 1 3 5 1 3 5 5 0 0 0 0 ...原创 2018-12-06 00:06:03 · 263 阅读 · 0 评论 -
19.丑数(UVa136)
问题: 我们把只包含因子2,3和5的数称作为丑数。 1,2,3,4,5,6,8,9,10,12,15,⋯1,2,3,4,5,6,8,9,10,12,15,\cdots1,2,3,4,5,6,8,9,10,12,15,⋯求按从小到大的顺序的第1500个丑数。 解决: #include<iostream> #include<vector> #include<queue&g...原创 2018-12-09 00:54:58 · 280 阅读 · 0 评论 -
1.输入输出
一、管道 // 1.cpp #include&lt;stdio.h&gt; int main() { int n = 0; scanf("%d", &amp;n); printf("%d\n",n); } g++ 1.cpp -o 1.exe echo 1024|1.exe 输出:1024 二、带参执行 #include&lt;stdi原创 2018-11-26 21:34:38 · 143 阅读 · 0 评论 -
2.阶乘之和
阶乘之和 输入 nnn,计算 S=1!+2!+3!+⋯+n!S=1!+2!+3!+ \cdots +n!S=1!+2!+3!+⋯+n! 的末尾6位(不含前导 0)。其中 n&amp;amp;amp;amp;amp;amp;lt;106n&amp;amp;amp;amp;amp;amp;lt;10^6n&amp;amp;amp;amp;amp;lt;106。 BUG1: #include&amp;amp;amp;amp;amp;lt;std原创 2018-11-26 21:36:17 · 880 阅读 · 0 评论 -
3.水仙花数
方法一: #include&amp;lt;iostream&amp;gt; using namespace std; int main(){ int a = 0; for (int x = 1; x&amp;lt;10; x++){ for (int y = 0; y&amp;lt;10; y++){ for (int z = 0; z&amp;lt;10; z++){ a = 100原创 2018-11-26 22:39:16 · 176 阅读 · 0 评论 -
9.竖式问题
问题: 找出形如 abc*de (三位数乘以两位数) 的算式,使得在完整的竖式中,所有数字属于一个特定的数字集合。输入数字集合 (相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。 解决: #include"stdio.h" #include"string.h" using namespace std; int main() { int count ...原创 2018-12-02 23:29:52 · 305 阅读 · 0 评论 -
10.Tex中的引号
问题: 在Tex中,做双引号的 “ `` ”,右双引号是 “ " ”(两个回车左边的),输入一篇包含双引号的文章,你的任务是把它转换成TeX的格式。 样例输入: "To be or not to be,"quoth the Bard,“that is the question”. 样例输出: ``To be or not to be, ‘’ quoth the Bard, ``that is th...原创 2018-12-02 23:58:56 · 205 阅读 · 0 评论 -
4.韩信点兵
方法一: #include&lt;stdio.h&gt; #define INF 10000000 using namespace std; int main() { int a, b, c, cnt = 1; while (scanf("%d %d %d", &amp;a, &amp;b, &amp;c) != EOF) { int i; for (i =原创 2018-11-27 18:42:23 · 516 阅读 · 0 评论 -
5.子序列和
问题: 输入两个正整数,n&lt;m&lt;106n &lt; m &lt; 10 ^{6}n<m<106,输出1n2+1(n+1)2+⋯+1m2\frac{1}{n_2}+\frac{1}{(n+1)^{2}}+\cdots+\frac{1}{m^{2}}n21+(n+1)21+⋯+m21,保留5位小数。输入包含多组数据,结束标记为n=m=0。...原创 2018-11-27 19:15:32 · 364 阅读 · 0 评论 -
7.开灯问题
问题: 有n盏灯,编号为1~n。第一个人把所有灯打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关掉),以此类推。一共有k个人,问最后有那些灯开着?输入:n和k,输出开着灯的编号。k&lt;=n&lt;=1000。 样例输入:7 3 样例输出:1 5 6 7 #include&lt;stdio.h&gt...原创 2018-11-30 18:36:40 · 286 阅读 · 0 评论 -
8.蛇形填数
给定一个 n , 在 n∗nn * nn∗n 的方阵中填入 1 ,2, 3,……,n * n, 要求填成蛇形。 样例,n = 5 时 , 如下所示: 13 14 15 16 &ThinSpace;\, 1 12 23 24 17 &ThinSpace;\, 2 11 22 25 18 &ThinSpace;\, 3 10 ...原创 2018-11-30 19:19:00 · 261 阅读 · 0 评论 -
24.二叉树的层次遍历(UVa122)
问题: 树状结构在计算机科学的许多领域中都相当重要。本问题牵涉到建立树及走访树。给你一二叉树,你的任务是写一个程序来打印依「阶层(level-order)」走访的结果。在本问题中,二叉树的每个节点含有一个正整数,并且节点的数目最少1个,最多256个。在阶层走访中,依阶层从低到高,同阶层从左到右的次序来打印。例如以下的二叉树阶层走访的结果为:5,4,8,11,13,4,7,2,1 输入: (11,...原创 2018-12-12 19:08:58 · 217 阅读 · 0 评论 -
16.安迪的第一个字典(UVa10815)
输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出。单词不区分大小写。 输入: Adventures in Disneyland Two blondes were going to Disneyland when they came to a fork in the road. The sign read: “Disneyland Left.” So they went ho...原创 2018-12-08 20:52:36 · 364 阅读 · 0 评论 -
17.反片语(Uva156)
输入一些单词,找出所有满足如下条件的单词: 该单词不能通过字母重排,得到输入文本中的另外一个单词。 在判断是否满足条件时,不区分大小写,但输出保留输入中的大小写,按字典序进行排列(所有大写字母在小写字母的前面) 样例输入: ladder came tape soon leader acme RIDE lone Dreis peat ScALE orb eye Rides dealer NotE d...原创 2018-12-08 21:27:43 · 219 阅读 · 0 评论 -
11.WERTYU (UVa10082)
问题: 把手放在键盘上时,稍不注意就会往右错一位。这样,输入Q会变成输入W,输入J会变成输入K等。 样例输入 O S, GOMR YPFSU/ 样例输出 I AM FINE TODAY. 解决: #include <iostream> using namespace std; char s[]="`1234567890=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM...原创 2018-12-05 22:26:38 · 278 阅读 · 0 评论 -
12.回文词(UVa401)
问题: 输入一个字符串,判断它是否为回文以及镜像串。输入字符串保证不含数字0.所谓回文串,就是反转之后原串相同,如abba和madam。所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE。注意,并不是每个字符在镜像之后都能得到一个合法字符,本题中,每个字符的镜像如下所示,(空白项表示该字符镜像后不能得到一个合法的字符)。 样例输出: NOTAPALINDROME – is not a pa...原创 2018-12-05 23:01:45 · 165 阅读 · 0 评论 -
17.集合栈计算机(UVa12096)
题目是这样的: 有一个专门为了集合运算而设计的“集合栈”计算机。该机器有一个初始为空的栈,并且支持以下操作: PUSH:空集“{}”入栈 DUP:把当前栈顶元素复制一份后再入栈 UNION:出栈两个集合,然后把两者的并集入栈 INTERSECT:出栈两个集合,然后把二者的交集入栈 ADD:出栈两个集合,然后把先出栈的集合加入到后出栈的集合中,把结果入栈 每次操作后,输出栈顶集合的大小(即元...原创 2018-12-08 23:03:20 · 283 阅读 · 0 评论 -
18.团体队列(UVa540)
问题: 有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾。 输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进行) ENQUEUE x:编号为x的人进入长队 DEQUEUE: 长队列队首出队 STOP: 停止模拟 对于每一个DEQUEUE指令,输出出对人的编号 解决:...原创 2018-12-09 00:26:58 · 296 阅读 · 0 评论 -
《python大战机器学习》勘误
github地址 第6页第二段:符号错误:(感谢网友 周礼广 的提示) P(y=1/x⃗)=11+e−z,z=w⃗⋅x⃗+b P(y=1/\mathbf{\vec x})=\frac{1}{1+e^{-z}},z=\mathbf{\vec w}\cdot \mathbf{\vec x}+b P(y=1/x)=1+e−z1,z=w⋅x+b 第194页倒数第三段:公式未换行:(感谢网友 齐照辉 ...原创 2019-09-06 10:57:56 · 229 阅读 · 0 评论