算法思路

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]从第二个字符开始



阅读更多
个人分类: 算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

算法思路

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭