算法思路

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值