题意:给一个数字序列,要求再其中找到两个数,其和再模p的结果是最大的,求此和。思路:先将输入的元素模p,排序。结果可能有两种情况:(1)a+b大于p:肯定由两个最大的数之和来产生。(2)a+b小于p:设b为最大且a+b小于p,那么结果在这两个数的位置之间产生。用两个指针找出来,再与(1)中的ans比...
分类:
其他好文 时间:
2015-06-12 20:57:05
阅读次数:
162
题目:给定一个整型数组,是否能找出两个数使其和为指定的某个值?注:整型数组中不存在相同的数。...
分类:
编程语言 时间:
2015-06-06 16:41:36
阅读次数:
162
求逆序对问题与解决方案原理
在一个数列中,如果规定从小到大为正序,那么如果排在后面的某个元素比前面的某一个元素小,那么就称这两个数构成一个逆序对,例如,数列5,4,3,2,1中,任一个数都与它前面的数构成逆序对,这个序列中一共就有1+2+3+4=10个逆序对,数列23541中有5个逆序对,那么任给定一个数列,如何知道有多少个逆序对呢?简单的方法是将每个元素与它后面的元素比较,然后就可以累加出总的...
分类:
其他好文 时间:
2015-05-22 09:52:32
阅读次数:
221
在屏幕上打印出杨辉三角形。 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
根据上图可以得到2个公式:
1)每行的第一个和最后一个为1
2)除上式得两个数外,其他数分别是上一行中的前一列和同一列的两数之和。#includeint add(int x,int y)...
分类:
其他好文 时间:
2015-05-05 21:55:37
阅读次数:
151
题意:在一个整数序列中找到两个元素,他们之和为target,并用vector返回这两个元素的位置(升序),位置从1开始算起。思路:方法(1):两个指针法。也就是排序,然后一个从头扫,一个从尾扫,前提是先排序,但是给的数组是无序的,一旦排序就失去了他们的具体位置。如果是ACM的题还可以弄个结构体把他们...
分类:
其他好文 时间:
2015-04-06 21:37:25
阅读次数:
196
前几天参加C++的一个面试,面试官问到这样一个问题,当时给出的第一答案是1. 遍历数组中的元素,两数相加与给定的整数进行比较,此种方法在数组个数和整数个数较小时可用。 两数之和等于任意整数,肯定有一个数小于等于任意整数的1/2,另一个数大于等于任意整数的1/2,那么只需要判断整数的一半,由于数组是排...
分类:
编程语言 时间:
2015-04-03 08:01:58
阅读次数:
242
算法导论第2.3-7的习题中要求给出一个运行时间为O(nlgn)的算法,这个算法的功能是能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在两个其和等于x的元素。
方法一:都知道在一个有序的序列中使用二分查找的时间复杂度是O(lgn)。首先排序,那么我们可以枚举集合S中的每一个元素,然后使用二分查找算法查找x-y(y是S中的一个元素),那么这个算法的时间复杂度是O(nlgn)。...
分类:
其他好文 时间:
2015-02-21 18:52:24
阅读次数:
243
杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。前提:端点的数为1.1、每个数等于它上方两数之和。2、每行数字左右对称,由1开始逐渐变大。3、第n行的数字有n项。4、第n行数字和为2n-1。5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(..
分类:
编程语言 时间:
2015-01-26 19:26:41
阅读次数:
212
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输入:每个测试案例包括两行:第一行包含一个整数n和k,n表示数组中的元素个数,k表示两数之和。其中1 #include #define INF 0x7ffffff...
分类:
其他好文 时间:
2015-01-10 11:13:23
阅读次数:
215
题意:45块石头如图排列,每块石头上的数等于下面支撑它的两数之和,求其余未表示的数。分析:首先来计算最下面一行的数,A71 = A81 + A82 = A91 + 2A92 + A93,变形得到A92 =(A71 - A91 - A93) / 2.以此类推,就能得到最下面一整行的数。有了这个“地基”...
分类:
其他好文 时间:
2015-01-04 11:19:50
阅读次数:
207