比较两个序列字典序(lexicographicallySmaller)

 1 bool lexicographicalSmaller(vector<int> a, vector<int> b)
 2 {
 3     int n = a.size();
 4     int m = b.size();
 5     for(int i = 0; i < n && i < m; i++)
 6     {
 7         if(a[i] < b[i]) return true;
 8         else if(b[i] < a[i])    return false;
 9         return i == n && i < m;
10     }
11 }

模板化(应用于定义了“小于”运算符的任意数据类型)

 1 template<class T>
 2 bool lexicographicalSmaller(vector<T> a, vector<T> b)
 3 {
 4     int n = a.size();
 5     int m = b.size();
 6     for(int i = 0; i < n && i < m; i++)
 7     {
 8         if(a[i] < b[i]) return true;
 9         else if(b[i] < a[i])    return false;
10         return i == n && i < m;
11     }
12 }

有了模板函数,不管定义的是vector<int>a, b, vector<string>a, b, vector<vector<int> >a, b,全都可以用if(lexicographicalSmaller(a, b))...的方式直接使用上述函数。

时间: 2024-08-04 13:30:28

比较两个序列字典序(lexicographicallySmaller)的相关文章

HDU 6625 three arrays 求两个序列异或最小值的排列(一个可以推广的正解

目录 题意: 解析 原题描述 @(hdu 6625求两个序列异或最小值的排列) 题意: \(T(100)\)组,每组两个长度为\(n(100000)\)的排列,你可以将\(a[]\)和\(b[]\)随机排列,可以得到\(c[i]=a[i]\)^\(b[i]\),求字典序最小的\(c[]\). 解析 一个显然对的贪心做法: 针对本题 每次两颗字典树同时往下走,如果都有\(0\)或者\(1\)这条路径,就随便同时走\(0\;or\;1\)这条路径,否则只能一个走\(0\),一个走\(1\).这样复杂

【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)

32.(数组.规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序:要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小.例如: var a=[100,99,98,1,2,3];var b=[1,2,3,4,5,40]; 首先,目标一定是先找到n个数字,使得数字和比总和的一半小,但是最接近. 思路一:开始看这道题跟之前学的动态规划很像,就想用动态规划来解.但是....做不出来........... 必须要选一半的数字让我头都大了. 思路二:

求解两个序列的所有最长公共子序列(LCSes)

 摘要 本篇博文提供了实现求解所有最长公共子序列的程序实现,并提供输出所有公共子序列的方法解释,需要具备基础知识是求解一个公共子序列的动态规划方法,请自行查阅相关资料. 题目重述 子序列概念:设X=< x1, x2,┅, xm>,若有1≤i1< i2< ┅ <ik≤m,使得Z=< z1, z2,┅, zk> = < xi1, xi2,┅, xik>,则称Z是X的子序列,记为Z<X. 例如: X=<A,B,C,B,D,A,B>, 

[微软]有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小_利用排列组合思路解决_python版

(原题出自微软公司面试题)问题如下:有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小.例如:a=[100,99,98,1,2, 3]b=[1, 2, 3, 4,5,40] 题目是看到QQ群友发的,网上也百度了下目前已经有好几种解法了.写了半天有点晕,后面忽然想到中学时候数学里面的排列组合的方法.方法对于较短的list可行,长list组合情况太多,可能耗时太长或溢出. 1 from itertools im

python-判断两个序列的成员是否一样

目的:判断两个序列的成员是否一样,如:list1 = [1, 2],list2 = [2, 1],则两个序列的成员是一样的. 实现:借助集合set()的性质实现. 代码如下: 1 if __name__ == "__main__": 2 l = [[2, 1], [3, 4]] 3 for i in l: 4 print (i) 5 tmp = set(i) 6 print (tmp) 7 if tmp == {1, 2}: 8 print ("yes") 9 el

Swift处理堆栈问题——给定两组序列,其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序

题目:输入两个整数序列.其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序.为了简单起见,我们假设push 序列的任意两个整数都是不相等的.比如输入的push 序列是1.2.3.4.5,那么4.5.3.2.1 就有可能是一个pop 系列,但序列4.3.5.1.2 就不可能是push 序列1.2.3.4.5 的pop 序列. 分析: 我们首先定义遍历push的序数i=0  遍历pop序列的序数 j =0 我们可以先遍历给出的push序列,并且时刻与pop序列的头元素p

动态规划求两个序列的最长公共子序列

摘录:http://blog.chinaunix.net/uid-26548237-id-3374211.html 1.序列str1和序列str2 ·长度分别为m和n: ·创建1个二维数组L[m.n]: ·初始化L数组内容为0 ·m和n分别从0开始,m++,n++循环: - 如果str1[m] == str2[n],则L[m,n] = L[m - 1, n -1] + 1: - 如果str1[m] != str2[n],则L[m,n] = max{L[m,n - 1],L[m - 1, n]}

_____________________________________动态规划之最长子序列问题______1:两个序列中的______________________________________

动态规划之最长自序列问题....两个字符串中的最长子序列问题. 参考例题杭电1159.....参考文件.lcy老师的课件....在此对lcy老师致敬.. 最长子序列问题....... 下面附上题目 Online Judge Online Exercise Online Teaching Online Contests Exercise Author F.A.Q Hand In Hand Online Acmers Forum | Discuss Statistical Charts Proble

阿里笔试题:求两个子序列的最大连续子序列

原题例如以下: 给定一个query和一个text,均由小写字母组成.要求在text中找出以相同的顺序连续出如今query中的最长连续字母序列的长度.比如.query为 "acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出如今query中的字母序列,因此.返回结果应该为其长度3.请注意程序效率. 解题方法一: 和字符串匹配一样(http://blog.csdn.net/sinat_24520925/articl