这个算法的计算次数: 1.当n是偶数,一共是n/2组,每组进行3次比较,但第一组只要一次比较,所以一共需要(3n-4)/2次比较; 2.当n是奇数,一共是(n+1)/2组,每组进行3次比较,但第一组是1次而最好一组是2次,所以一共需要(3n-3)/2次比较。 可以证明这个算法是最优的,证明可在其他书 ...
分类:
其他好文 时间:
2017-03-02 11:13:41
阅读次数:
186
题意: 给定Q (1 ≤ Q ≤ 200,000)个数A1,A2 … AQ,,多次求任一区间Ai – Aj中最大数和最小数的差。 思路: 线段树。 实现: ...
分类:
其他好文 时间:
2017-02-01 11:39:54
阅读次数:
186
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。 该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。 比如:766431 - 134667 = 631764 就是具有这样特征的数字。 你还能找到另一个这样的6位数吗 ...
分类:
其他好文 时间:
2016-12-17 02:35:44
阅读次数:
182
此题为入门级线段树 题意:给定Q(1<=Q<=200000)个数A1A2…AQ,多次求任一区间Ai-Aj中最大数和最小数的差 ...
分类:
其他好文 时间:
2016-11-20 07:11:47
阅读次数:
180
省赛热身,一道水题 n个数,n<=10,每次取出最大数和最小数,然后把这两个数替换为max-min,直到最后相等的时候,输出剩余的那一个数,如果不可能,输出Nooooooo! 开始我认为,这个问题每次回减小一个数或者消掉一个数,永远不可能发生循环,用想借助multiset的自动排序,来快速完成,结果 ...
分类:
其他好文 时间:
2016-05-03 10:39:05
阅读次数:
143
/*此段代码用于在不排序的情况下,找出一组数中的最大数和最小数。 并且交换最大数和最后一位数,交换最小数与第一位数。 此时不能直接排序,因为排序后,原数据的排列顺序已经改变,*/#include using namespace std;int main(){ int n; /...
分类:
其他好文 时间:
2016-01-02 16:29:25
阅读次数:
148
题意:”平均数“的意思是:最大数和最小数之间的差值为0或1;先求“平均”数组,再相减。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define clc(a,b) memset(a,b,sizeof(a))...
分类:
其他好文 时间:
2015-12-28 21:57:13
阅读次数:
259
题目来源:《编程之美》2.10 题目:同时找出数组中的最大数和最小数 分析:最基本的方法是两次线性扫描数组,分别找出最大数和最小数,时间复杂度为O(n)。其实我们可以一次扫描即可。首先,我们将输入元素相互进行比较,然后把较小的与当前最小值比较,把较大的与当前最大值进行比较。这样,对每两个元素...
分类:
编程语言 时间:
2015-09-05 11:06:53
阅读次数:
162
#include #include int next_num(int x){ char s[10]; int a,b,n; sprintf(s,"%d",x); n=strlen(s); for (int i=0; is[j]) { cha...
分类:
其他好文 时间:
2015-07-07 18:52:57
阅读次数:
112