算法基础
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 · 296 阅读 · 0 评论 -
15.大理石在哪儿(Uv10474)
问题:输入n个整数,代表大理石编号;再输入q个数(编号),问是否有这个编号的大理石,位置在哪里?输入:4 12 3 5 155 21 3 3 3 12 3输出:Sample OutputCASE# 1:5 found at 4CASE# 2:2 not found3 found at 3解决:#include <iostream>#include &...原创 2018-12-06 23:21:34 · 270 阅读 · 0 评论 -
20.大整数类
#include<iostream>#include<vector>#include<queue>#include<cstring>#include<iostream>#include<cmath>#include<string> // >>using namespace原创 2018-12-09 16:47:36 · 191 阅读 · 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 · 336 阅读 · 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.输入:3A 50 10B 10 20...原创 2018-12-11 23:31:52 · 444 阅读 · 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 · 273 阅读 · 0 评论 -
25.树(UVa548)
问题:给一棵点带权(权各不相同,都是正整数)二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。如果有多解,该叶子本身的权应尽量小。输入:3 2 1 4 5 7 63 1 2 5 6 7 4输出:1#include<iostream> //getline(cin, line)#include<string>#include<sstream...原创 2018-12-18 12:51:58 · 256 阅读 · 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 · 186 阅读 · 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 · 205 阅读 · 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 · 130 阅读 · 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 · 373 阅读 · 0 评论 -
归并排序
#include <stdio.h>#define LEN 8int 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 · 123 阅读 · 0 评论 -
根据前序和中序遍历结果构造二叉树
//binarytree.h#ifndef BINARYTREE_H#define BINARYTREE_Htypedef 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 · 571 阅读 · 0 评论 -
排序二叉树
/* bst.h */#ifndef BST_H#define BST_Htypedef 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 · 231 阅读 · 0 评论 -
折半查找
#include <stdio.h>#define LEN 8int 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 · 208 阅读 · 0 评论 -
走迷宫--深度优先搜索--堆栈
#include <stdio.h>#define MAX_ROW 5#define MAX_COL 5struct 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 · 269 阅读 · 0 评论 -
走迷宫--广度优先搜索--队列
#include <stdio.h>#define MAX_ROW 5#define MAX_COL 5struct 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 · 471 阅读 · 0 评论 -
14.刽子手游戏(Uva489)
问题:游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母。 如果单词里有那个字母,所有该字母会显示出来;如果没有那个字母,则计算机会在一幅“刽子手”画上填一笔。 这幅画一共需要7笔就能完成,因此你最多只能错6次。 注意,猜一个已经猜过的字母也算错。在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、 输了(You lose.)还是放弃了...原创 2018-12-06 20:19:49 · 231 阅读 · 0 评论 -
13.猜数字(Uva340)
问题:实现一个“猜数字”的游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)。输入包含多组数据,每组输入第一行为序列长度n,第二行是答案序列,接下来是若干行猜测序列。猜测序列全0时该数据结束。n=0时输入结束。样例输入:41 3 5 51 1 2 34 3 3 56 5 5 16 1 3 51 3 5 50 0 0 0...原创 2018-12-06 00:06:03 · 275 阅读 · 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 · 294 阅读 · 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.exeecho 1024|1.exe输出:1024二、带参执行#include&lt;stdi原创 2018-11-26 21:34:38 · 152 阅读 · 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 · 910 阅读 · 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 · 188 阅读 · 0 评论 -
9.竖式问题
问题:找出形如 abc*de (三位数乘以两位数) 的算式,使得在完整的竖式中,所有数字属于一个特定的数字集合。输入数字集合 (相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。解决:#include"stdio.h"#include"string.h"using namespace std;int main(){ int count ...原创 2018-12-02 23:29:52 · 318 阅读 · 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, ``thatis th...原创 2018-12-02 23:58:56 · 218 阅读 · 0 评论 -
4.韩信点兵
方法一:#include&lt;stdio.h&gt;#define INF 10000000using 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 · 535 阅读 · 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 · 378 阅读 · 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 · 303 阅读 · 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 · 270 阅读 · 0 评论 -
24.二叉树的层次遍历(UVa122)
问题:树状结构在计算机科学的许多领域中都相当重要。本问题牵涉到建立树及走访树。给你一二叉树,你的任务是写一个程序来打印依「阶层(level-order)」走访的结果。在本问题中,二叉树的每个节点含有一个正整数,并且节点的数目最少1个,最多256个。在阶层走访中,依阶层从低到高,同阶层从左到右的次序来打印。例如以下的二叉树阶层走访的结果为:5,4,8,11,13,4,7,2,1输入:(11,...原创 2018-12-12 19:08:58 · 232 阅读 · 0 评论 -
16.安迪的第一个字典(UVa10815)
输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出。单词不区分大小写。输入:Adventures in DisneylandTwo blondes were going to Disneyland when they came to a fork in theroad. The sign read: “Disneyland Left.”So they went ho...原创 2018-12-08 20:52:36 · 379 阅读 · 0 评论 -
17.反片语(Uva156)
输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词。在判断是否满足条件时,不区分大小写,但输出保留输入中的大小写,按字典序进行排列(所有大写字母在小写字母的前面)样例输入:ladder came tape soon leader acme RIDE lone Dreis peatScALE orb eye Rides dealer NotE d...原创 2018-12-08 21:27:43 · 234 阅读 · 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 · 295 阅读 · 0 评论 -
12.回文词(UVa401)
问题:输入一个字符串,判断它是否为回文以及镜像串。输入字符串保证不含数字0.所谓回文串,就是反转之后原串相同,如abba和madam。所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE。注意,并不是每个字符在镜像之后都能得到一个合法字符,本题中,每个字符的镜像如下所示,(空白项表示该字符镜像后不能得到一个合法的字符)。样例输出:NOTAPALINDROME – is not a pa...原创 2018-12-05 23:01:45 · 176 阅读 · 0 评论 -
17.集合栈计算机(UVa12096)
题目是这样的: 有一个专门为了集合运算而设计的“集合栈”计算机。该机器有一个初始为空的栈,并且支持以下操作:PUSH:空集“{}”入栈DUP:把当前栈顶元素复制一份后再入栈UNION:出栈两个集合,然后把两者的并集入栈INTERSECT:出栈两个集合,然后把二者的交集入栈ADD:出栈两个集合,然后把先出栈的集合加入到后出栈的集合中,把结果入栈每次操作后,输出栈顶集合的大小(即元...原创 2018-12-08 23:03:20 · 304 阅读 · 0 评论 -
18.团体队列(UVa540)
问题:有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾。输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进行)ENQUEUE x:编号为x的人进入长队DEQUEUE: 长队列队首出队STOP: 停止模拟对于每一个DEQUEUE指令,输出出对人的编号解决:...原创 2018-12-09 00:26:58 · 317 阅读 · 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 · 239 阅读 · 0 评论