算法思路

原创 2015年07月07日 16:14:56

1、动态规划:一堆积木,每个积木有长宽高<c,k,g>;现在要从中找出满足以下规则的最多木块数。规则:下面的木块长宽高都要大于或等于上面的长宽高?

思路:先把所有木块按长排序,长相同按宽排序,以此类推;定义数组所以值初始化位1,再第i个木块从第一块木筷比较,找出比第i个木块小的所有木块的键值最大的一个再加1,即为其键值;

2、在一个元素个数为N的数组里,找到升序排在N/5位置的元素(或者第k大小的元素)的最优算法时间复杂度是O(N)  用桶排序或基数排序可以解决


3、A、B和C。如果C包含且仅包含来自A和B的所有字符,而且在C中属于A的字符之间保持原来在A中的顺序,属于B的字符之间保持原来在B中的顺序,那么称C是A和B的混编。实现一个函数,判断C是否是A和B的混编。

给定三个字符串A,BC,及他们的长度。请返回一个bool值,代表C是否是A和B的混编。保证三个串的长度均小于等于100。

测试样例:
"ABC",3,"12C",3,"A12BCC",6
返回:true

classMixture {
public:
    bool chkMixture(string A, intn, string B, intm, string C, intv) {
        // write code here
        if(n+m!=v)returnfalse;
  
        if(v == 0)returntrue;
          
        if(A[0] == C[0] && B[0] != C[0]){
                returnchkMixture(&A[1],n-1,B,m,&C[1],v-1);
            }
        if(A[0] != C[0] && B[0] == C[0]){
                returnchkMixture(A,n,&B[1],m-1,&C[1],v-1);
            }
        if(A[0] == C[0] && B[0] == C[0]){
                returnchkMixture(&A[1],n-1,B,m,&C[1],v-1)||chkMixture(A,n,&B[1],m-1,&C[1],v-1);
            }
            returnfalse;
          
    }
};
返回值,string: &A[1]从第二个字符开始



相关文章推荐

c++排序算法及实现思路

  • 2012年03月18日 11:28
  • 322KB
  • 下载

常见面试算法思路讲解

  • 2014年07月25日 05:25
  • 1.26MB
  • 下载

关于24点游戏的编程思路与基本算法

24点游戏的算法,其中最主要的思想就是穷举法。所谓穷举法就是列出4个数字加减乘除的各种可能性,包括括号的算法。我们可以将表达式分成以下几种:首先我们将4个数设为a,b,c,d,,其中算术符号有+,-,...

SGM算法思路

semi-global matching(缩写SGM)是一种用于计算双目视觉中disparity的半全局匹配算法。在OpenCV中的实现为semi-global block matching(SGBM...

指纹识别算法的一点思路

  • 2008年09月07日 11:09
  • 32KB
  • 下载

迭代算法解题地一般思路 doc

  • 2008年07月08日 13:13
  • 34KB
  • 下载

普里姆算法思路

算法思想:可取图中任意一个顶点V作为生成树的根,之后若要往生成树上添加顶点W,则在顶点V和W之间必定存在一条边。并且该边的权值在所有连通顶点V和W之间的边中取值最小。 一般情况下,假设n个顶点分成两...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法思路
举报原因:
原因补充:

(最多只允许输入30个字)