Algorithm note
今晚打佬虎
中国厨艺训练学院第105届辍学生,同时还是一名二手的人工智能表演艺术家!
展开
-
递归(全排列)
全排列(Full Permutation)全排列指的是n个整数的所有排列,按从小到大的顺序输出n个整数的全排列,其中(a1,a2,....ana1,a2,....ana_1,a_2,....a_n)的顺序小于(b1,b2....bnb1,b2....bnb_1, b_2....b_n):a1=b1,a2=b2....an=bn,ai<bia1=b1,a2=b2....an=bn,ai&l...原创 2018-06-30 09:23:44 · 1850 阅读 · 0 评论 -
递归(分治)
分治(divide and conquer): 将原来的问题划分成规模较小结构与原问题相同或相似的子问题,分别解决这些子问题,最后合并子问题的解,得到原问题的解.1.递归求解n的阶乘#include <iostream>using namespace std;int F(int n) { if (n == 0) return 1; else retur...原创 2018-06-29 22:57:32 · 510 阅读 · 0 评论 -
递归(全排列)
全排列(Full Permutation)全排列指的是n个整数的所有排列,按从小到大的顺序输出n个整数的全排列,其中(a1,a2,....ana1,a2,....ana_1,a_2,....a_n)的顺序小于(b1,b2....bnb1,b2....bnb_1, b_2....b_n):a1=b1,a2=b2....an=bn,ai&lt;bia1=b1,a2=b2....an=bn,ai&l...原创 2018-06-30 09:18:23 · 1799 阅读 · 0 评论 -
散列 Hash
问题描述: 给出N个整数,在输入M个整数,判断M个数中是否在N中出现过. 举个例子:N = {8, 3,7,2 6}, M = 3 , { 7 , 4, 2} 思路1:遍历N个整数,和M个整数,判断是否相等.时间复杂度为O(MN) 思路2:时间换空间,定义一个bool型的hashTabel,在输入N个整数的时候,hashTabel[x] = true; 时间复杂度为O(M+N)#...原创 2018-06-26 16:00:02 · 144 阅读 · 0 评论 -
C/C++[codeup 2080]整数奇偶排序
题目描述2080整数奇偶排序输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列; 2.然后输出其中的偶数,并按从小到大排列。输入任意排序的10个整数(0~100),彼此以空格分隔。输出可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔。样例输入 0 56 19 81 59 48 35 90 8...原创 2018-06-26 11:28:40 · 1972 阅读 · 0 评论 -
C/C++[codeup 2088]排名
题目描述2088排名今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的考生,并将他们的成绩按降序打印。输入 测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N < 1000 )、考题数M ( 0 < M < = 10 ...原创 2018-06-26 13:53:01 · 240 阅读 · 0 评论 -
C/C++[codeup 1962]单词替换
题目描述1962单词替换输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入 多组数据。每组数据输入包括3行, 第1行是包含多个单词的字符串 s, 第2行是待替换的单词a,(长度<=100) 第3行是a将被替换的单词b。(长度<...原创 2018-06-19 19:04:20 · 3044 阅读 · 0 评论 -
C/C++[codeup 1967]数组逆置
题目描述1967数组逆置输入一个字符串,长度小于等于200,然后将数组逆置输出。输入 测试数据有多组,每组输入一个字符串。输出 对于每组输入,请输出逆置后的结果。样例输入 tianqin 样例输出 niqnait 提示 注意输入的字符串可能会有空格。#include <iostream>#include <cstring>using...原创 2018-06-20 09:00:24 · 793 阅读 · 0 评论 -
[codeup 2031]To Fill or Not to Fill
问题 C:2031 To Fill or Not to Fill题目描述 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on...原创 2018-07-09 14:13:56 · 422 阅读 · 2 评论 -
C/C++[codeup 2025]比较字符串
题目描述2025比较字符串输入两个字符串,比较两字符串的长度大小关系。输入 输入第一行表示测试用例的个数m,接下来m行每行两个字符串A和B,字符串长度不超过50。输出 输出m行。若两字符串长度相等则输出A is equal long to B;若A比B长,则输出A is longer than B;否则输出A is shorter than B。样例输入 2 abc xy ...原创 2018-06-20 09:24:10 · 211 阅读 · 0 评论 -
C/C++[codeup 2044]神奇的口袋
问题 C: 2044神奇的口袋题目描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入输入的第一...原创 2018-06-30 20:44:20 · 709 阅读 · 0 评论 -
C/C++[codeup 2069]中位数
题目描述2069中位数中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)输入 该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000. 接着N行为N个数据的输入,N=0时结束输入输...原创 2018-06-25 22:55:40 · 1502 阅读 · 0 评论 -
C/C++[codeup 2043]小白鼠排队
题目描述2043小白鼠排队N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。输入多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是...原创 2018-06-25 21:44:12 · 737 阅读 · 0 评论 -
C/C++[codeup 1978]排序
题目描述 请写一个程序,对于一个m行m列的(1#include &lt;iostream&gt;#include &lt;algorithm&gt;using namespace std;bool cmp(int a, int b) { return a &gt; b;}//计算行列元素的和,int axis = 0,计算列元素的和,axis = 1,计算行元素的和//...原创 2018-06-25 19:53:55 · 179 阅读 · 0 评论 -
C/C++[codeup 2018]数列
问题 B: 2018数列题目描述 编写一个求斐波那契数列的递归函数,输入n 值,使用该递归函数,输出如下图形(参见样例)。输入 输入第一行为样例数m,接下来有m行每行一个整数n,n不超过10。输出 对应每个样例输出要求的图形(参见样例格式)。样例输入 1 6 样例输出 0 0 1 1 0 1 1 2 3 0 1 ...原创 2018-06-30 18:00:59 · 200 阅读 · 0 评论 -
C/C++[codeup 1907]吃糖果
问题 A:1907 吃糖果题目描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0)。 妈妈告诉名名每天可以吃一块或者两块巧克力。 假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案。 例如: 如果N=1,则名名第1天就吃掉它,共有1种方案; 如果N=2,则名名可以第1天吃1块,第2天吃1块,也可以第1...原创 2018-06-30 17:00:23 · 2455 阅读 · 0 评论 -
N皇后问题
N皇后问题: 在一个n*n的国际象棋棋盘中,放置n个皇后,n个皇后两两不再同一行,同一列,同一对角线上.求合法方案数. 思路:不能同行,同列即,每行每列只能放置一个皇后,n个皇后所在的行号,就是1~n的一个排列,所以只用遍历1~n的全排列即可,判断每个排列是否合法.每一个排列是没有重复的,显然,不在同行和同列是成立的,只用判断是否在同一对角线上即可. #include &l...原创 2018-06-30 16:27:42 · 167 阅读 · 0 评论 -
C/C++[codeup 1927]字符串内排序
题目描述1927字符串内排序输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入 测试数据有多组,输入字符串。输出 对于每组输入,输出处理后的结果。样例输入 tianqin 样例输出 aiinnqt 提示 注意输入的字符串中可能有空格 使用fgets()遇到了迷之错误#include <iostream>#include...原创 2018-06-25 17:29:14 · 449 阅读 · 0 评论 -
C/C++[codeup 2046]8皇后
问题 D: 2046八皇后题目描述会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。...原创 2018-07-01 19:16:11 · 261 阅读 · 0 评论 -
C/C++[codeup 2064]编排字符串
题目描述2064,编排字符串请输入字符串,最多输出4 个字符串,要求后输入的字符串排在前面,例如输入:EricZ输出:1=EricZ输入:David输出:1=David 2=EricZ输入:Peter输出:1=Peter 2=David 3=EricZ输入:Alan输出:1=Alan 2=Peter 3=David 4=EricZ输入:Jane输出:1=...原创 2018-06-20 11:37:29 · 228 阅读 · 0 评论 -
[PAT B1020] 月饼
PAT B1020 月饼 (25) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们...原创 2018-07-02 10:43:08 · 269 阅读 · 0 评论 -
C/C++[codeup 6120]String Subtraction
问题 D: 6120 String Subtraction (20)题目描述 Given two strings S1 and S2, S = S1 - S2 is defined to be the remaining string after taking all the characters in S2 from S1. Your task is simply to calcu...原创 2018-06-28 21:07:59 · 157 阅读 · 0 评论 -
C/C++[codeup 6112]Be Unique
问题 C: 6112 Be Unique (20)题目描述 Being unique is so important to people on Mars that even their lottery is designed in a unique way. The rule of winning is simple: one bets on a number chosen from [1,...原创 2018-06-28 19:52:04 · 271 阅读 · 0 评论 -
二分从查找(2)按条件查找
按条件查找:查找序列中第一个大于等于x元素的位置如果A[mid] >= x, 即 x 可能在 mid 或 mid的左侧, right = mid;如果A[mid] < x, left = mid - 1;按条件的二分查找与直接二分查找有几点不同: 1.循环条件,left < right, 不是 left <= right, 因为寻找第一个大于等于 x的元...原创 2018-07-10 21:05:54 · 284 阅读 · 0 评论 -
二分查找(1)
二分查找: 主要基于有序序列的查找算法,时间复杂度为O(logN) 首先确定序列的下标区间[left, right],然后每次判断当前[left, right]中点 mid = (left + right) / 2 , 的元素 n[mid] 与 查询元素 x 的大小关系. 如果,n[mid] > x, right = mid - 1; 如果,n[mid] < x, left =...原创 2018-07-10 18:58:04 · 223 阅读 · 0 评论 -
[codeup 1128]出租车费
问题 B: 1128出租车费题目描述 某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。 一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。 例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程...原创 2018-07-03 19:13:23 · 294 阅读 · 0 评论 -
C/C++[codeup 2066]分组统计
问题 B: 2066分组统计题目描述 先输入一组数,然后输入其分组,按照分组统计出现次数并输出,参见样例。输入 输入第一行表示样例数m,对于每个样例,第一行为数的个数n,接下来两行分别有n个数,第一行有n个数,第二行的n个数分别对应上一行每个数的分组,n不超过100。输出 输出m行,格式参见样例,按从小到大排。样例输入 1 7 3 2 3 8 8 2 3 1 2 3 ...原创 2018-06-28 11:56:57 · 1149 阅读 · 2 评论 -
[codeup 5038] 找零钱
问题 G: 5038找零钱 题目描述 小智去超市买东西,买了不超过一百块的东西。收银员想尽量用少的纸币来找钱。 纸币面额分为50 20 10 5 1 五种。请在知道要找多少钱n给小明的情况下,输出纸币数量最少的方案。 1<=n<=99; 输入 有多组数据 1<=n<=99; 输出 对于每种数量不为0的纸币,输出他们的面值*数量,再加起来输出 样例输入...原创 2018-07-10 11:47:34 · 207 阅读 · 0 评论 -
[codeup 2143] 迷瘴
问题 F: 2143迷瘴题目描述小明正在玩游戏,他控制的角色正面临着幽谷的考验—— 幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅。由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死。 幸好小明早有防备,提前备好了解药材料(各种浓度的万能药水)。现在只需按照配置成不同比例的浓度。 现已知小明随身携带有n种浓度的万能药水,体积V都相同,浓度则分别为Pi%。并...原创 2018-07-09 21:50:34 · 417 阅读 · 0 评论 -
[codeup 2134] FatMouse's Trade
问题 E:2134 FatMouse’s Trade题目描述 FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean. The warehouse has N rooms. The i-...原创 2018-07-09 17:16:48 · 204 阅读 · 0 评论 -
C/C++[1782 codeup] 谁是你的潜在朋友
问题 A:1782 谁是你的潜在朋友题目描述 “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。 首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书...原创 2018-06-27 17:21:48 · 321 阅读 · 1 评论 -
[codeup 1126]看电视
问题 A: 1126看电视题目描述 暑假到了,小明终于可以开心的看电视了。但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目。 现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗? 输入 输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示小明喜欢的节目的总数。 接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节...原创 2018-07-02 19:18:06 · 419 阅读 · 0 评论 -
贪心[不相交区间]
1.不相交区间输入N个区间(x, y),从中选择尽可能多的区间,这些区间之间两两没有交集; 如果存在一个区间包含另一个区间,应选择更小的区间. 输入: M,输入的区间个数,下面是M行的区间 3 1 2 3 4 5 6 输出 3#include &lt;iostream&gt;#include &lt;algorithm&gt;using namespace std...原创 2018-07-02 17:55:38 · 392 阅读 · 0 评论 -
[codeup 2132] Repair the Wall
问题 D: 2132 Repair the Wall题目描述Long time ago , Kitty lived in a small village. The air was fresh and the scenery was very beautiful. The only thing that troubled her is the typhoon. When the typho...原创 2018-07-09 15:02:11 · 290 阅读 · 0 评论 -
[PAT B1023]组个最小数
1023 组个最小数 (20)给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。现给定数字,请编写程序输出能够组成的最小的数。输入格式:每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字...原创 2018-07-02 16:58:55 · 152 阅读 · 0 评论 -
C/C++[codeup 1933,1993]图形输出
1933题目描述:输出梯形输入一个高度h,输出一个高为h,上底边为h的梯形。输入 一个整数h(1&lt;=h&lt;=1000)。输出 h所对应的梯形。样例输入 5样例输出#include &lt;iostream&gt;using namespace std;int main() { int h,w; while(cin&gt;&gt;h)...原创 2018-06-10 21:58:17 · 264 阅读 · 0 评论 -
C/C++[codeup 1808]字符串查找删除
1808题目描述:字符串查找删除给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。输入 输入只有1组数据。 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。输出 删除输入的短字符串(不区分大小写)并去掉空格,输出。样例输入 in #include int main() {printf(” Hi “); } 样...原创 2018-06-18 14:27:53 · 450 阅读 · 0 评论 -
C/C++[PAT B1022]D进制的A+B
1022 D进制的A+B (20输入两个非负10进制整数A和B(<=2^30^-1),输出A+B的D (1 < D <= 10)进制数。输入格式:输入在一行中依次给出3个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:123 456 8 输出样例:1103#include <iostream>using namespa...原创 2018-06-15 08:38:36 · 283 阅读 · 0 评论 -
C/C++[函数]
习题7-5题目描述 写一个函数将一个字符串按反序存放。在主函数中输入一个字符串,通过调用该函数,得到该字符串按反序存放后的字符串,并输出。输入 一行字符串。输出 输入字符串反序存放后的字符串。单独占一行。样例输入 abcd样例输出 dcba#include <stdio.h>#include <string.h>char change...原创 2018-05-31 22:16:31 · 436 阅读 · 0 评论 -
C/C++[数组]
习题6-4题目描述 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。 假设数组长度为10,数组中前9个数(这9个数要求从键盘上输入,输入时要满足自小到大的输入顺序)已经按从小到大进行排序。 然后再从键盘上输入一个整数,将此整数插入到前有序的9个数中,使得最终的10个数依然是从小到大有序的。输入 第一行输入以空格分隔的9个整数数,要求按从小到大的顺序输入。 ...原创 2018-05-31 14:48:55 · 764 阅读 · 0 评论