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,B和C,及他们的长度。请返回一个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]从第二个字符开始