查找整数对 【题目】一个长度为n的整型数组a,给定整数x,设计一个复杂度不超过O(nlog2n)的算法,查找出这个数组中所有两两和为x的整数对并输出。【思路】先对该数组进行排序,可以考虑快速排序或归并排序,然后分别从数组的小端i=0和大端j=n-1开始,将两数相加,若和大于x,则大端前移j–,若小于x则小端后移i++,相等则输出两个数,直至i>=j。#include <iostream>#include <algorithm>#define MAX 100using name
蓝桥杯——十六进制转八进制、十进制和十六进制相互转化 #include <iostream>#include <string.h> using namespace std;int main(){ int i,j,n,r; char str[100005],e[400005],b[400005]; //str、e、b分别保存十六、二、八进制数 cin>>n; while(n--) //连续输入 { cin>>str; int len=0; //保存二进制数的长度 for(i=s
动态规划——最小找钱问题 题目:这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如,给定了7种钱币面值为6 2 5 10 20 50 100,用来凑299元,可以用几种方案。我们的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。思路:1、对于这个硬币问题,我们每次都是取硬币,或者不取硬币。因此我们可以将这个硬币问题切割成若干个子问题(取不取这种硬币),而且每次决策都会用到这个子问题。而且所有的子问题中必定存在最优解。2、每次取硬币,都仅仅是做出决策
洛谷1007——独木桥 思路:士兵相遇时,虽然改变方向,但从远处看,可以认为他们穿过了对方,继续按原来方向前进,所以只需要考虑每个人撤离的最短和最长时间,即当前位置据桥头和桥尾的距离,然后取最后一个士兵完成撤离的最大和最小时间,即求士兵撤离完成最短和最长时间的最大值。图解可参考蚂蚁过桥。#include <bits/stdc++.h>using namespace std; //士兵相遇情形可看作穿过后继续各自走int main(){ int n,m,a[5005],i,j; int tmin=0,t..
洛谷1004——方格取数 思路:由于需要取2条路径最大值之和,且取完该位置数为0,因此两条路径相互影响,需要将两次路径看作两个人同时取数,使用四维dp数组,f[i][j][k][l]表示第一个人走到(i,j),第二个人走到(k,l)时最大取数之和 。代码:#include <bits/stdc++.h>using namespace std;//f[i][j][k][l]表示第一个人走到(i,j),第二个人走到(k,l)时最大取数之和 int main(){ int n,i,j,k,l,x,y,m;..
洛谷1799——数列 题目描述虽然 msh 长大了,但她还是很喜欢找点游戏自娱自乐。有一天,她在纸上写了一串数字:1, 1, 2, 5, 4。接着她擦掉了一个 1,结果发现剩下 1, 2, 4 都在自己所在的位置上,即 1 在第 1 位,2 在第 2 位,4 在第 4 位。她希望擦掉某些数后,剩下的数列中在自己位置上的数尽量多。她发现这个游戏很好玩,于是开始乐此不疲地玩起来……不过她不能确定最多能有多少个数在自己的位置上,所以找到你,请你帮忙计算一下!输入格式第一行为一个数 n,表示数列的长度。接下来一行为 n个用空格隔
洛谷1002——过河卒 题目描述棋盘上 AA 点有一个过河卒,需要走到目标 BB 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,AA 点 (0, 0)(0,0)、BB 点 (n, m)(n,m),同样马的位置坐标是需要给出的。现在要求你计算出卒从 AA 点能够到达 BB 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。输入格式一行四个正整数,分别表示 BB 点坐标和马的坐标。输
航电oj——I NEED A OFFER! Problem DescriptionSpeakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。“I NEED A OFFER”,他大
洛谷P1003——铺地毯 题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从 1 到 n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。输入格式输入共 n+2 行。第一行,一个整数 n,表示总共有 n 张地毯。接下来的 n 行中,第 i+1 行表示编号 ii 的
分治法——归并排序 题目:使用归并排序算法对10个数实现升序排列,输出排序结果。分治步骤如下:1)申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;2)设定两个指针,最初位置分别为两个已经排序序列的起始位置;3)比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复3直到某一序列结束,将另一序列剩下的所有元素直接复制到合并序列尾。#include <bits/stdc++.h> using namespace std;#define COUNT 10
分治法——整数因子分解 大于1的正整数n可以分解为:n=x1×x2×…×xm。例如,当n=18时,共有8种不同的分解式。对于给定的正整数n,计算n共有多少种不同的分解式。//////////////////////////////////////////////////////////////////////*/#include <bits/stdc++.h>using namespace std;////////////////////////////////////////////////////////
回文判断—栈 回文判断:假设称正读和反读都相同的字符序列为“回文”,例如,'abba’和’abcba’是回文,‘abcde’和’ababab’则不是回文。试写一个程序判别读入的一个以’#'为结束符的字符序列是否是“回文”。#include <iostream>#include <cstdio>#include <string>#include <stack>using namespace std;int main(){ stack<char>
硬币问题—贪心算法 分析:代码:#include <iostream>using namespace std;const int a[6]={1,5,10,50,100,500};int main(){ int s[6],i,t,count=0,total; cout<<"分别输入1,5,10,50,100,500硬币的个数:"<<endl; for(i=0;i<6;i++) cin>>s[i]; cout<<"输入支付钱数:"&l.
让气球升起 问题描述比赛时间又来了!看到气球四处飘荡是多么激动啊。但要告诉你一个秘密,评委们最喜欢的时间是猜测最流行的问题。比赛结束后,他们将计算各种颜色的气球并找到结果。今年,他们决定把这份可爱的工作留给你。输入输入包含多个测试案例。每个测试案例以数字 N (0 < N <= 1000) 开头 - 分布的气球总数。下一个 N 行各包含一种颜色。气球的颜色是多达15个小写字母的字符串。带有 N = 0 的测试案例终止了输入,此测试案例无法处理。输出对于每个案例,在单行上打印气球的颜色,以解决最流
拆分字符串—链表 单链表的分拆:一个单链表,data域为字符型,试将单链表拆分成3个链表,分别包含数字、字母和其它字符。#include <iostream>#include <cstdlib>#include <string.h>#include <iomanip> using namespace std;///////////////////////////////////////////////////////////////////数据结构定义 type
循环链表及应用(删除结点、猴子选大王) ////////////////////////////////////////////////////////////////// #include <iostream>#include <cstdlib>#include <time.h>#include <iomanip> #include <string.h>using namespace std;#define NUMBER 10/////////////////////
两个任意长度整数相加—链表 #include <iostream>#include <cstdlib>#include <time.h>#include <iomanip> #include <string.h>using namespace std;/////////////////////////////////////////////////////////////////#define NUMBER 10////////////////////////
第几天? Problem Description给定一个日期,输出这个日期是该年的第几天。Input输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。Output对于每组输入数据,输出一行,表示该日期是该年的第几天。Sample Input1985/1/202006/3/12Sample Output2071思路:先按月份计算天数,当遇到2月时,判断闰年还是平年,对应29天和28天,最后加上日期数。#
两个多项式的相加—链表 #include <iostream>#include <cstdlib>#include <time.h>#include <iomanip> using namespace std;/////////////////////////////////////////////////////////////////#define NUMBER 10//////////////////////////////////////////////////
平方和与立方和 Problem Description给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。Input输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。Output对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。你可以认为32位整数足以保存结果。Sample Input1 32 5Sample Output4 2820 152#include <stdio.h>#incl