由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一道小题
相关主题
bing的screening question,没回音了,帮忙看问题在哪leetcode上一题,求正解
Arista Networks面经2一家游戏公司的新鲜面经
找硬币的经典问题一道面试题
给大家看几道C 小程序也问两个算法题
白板代码,支持O(1)时间GetMin的stack问个经典面试题
amazon一道面试题Software Engineer - 4G Protocol Stack - Multiple positons/levels
关于判断stack grows up or down那道题CareerCup question
问道C内存的题?大家看看这道题code怎么写
相关话题的讨论汇总
话题: ipos话题: int话题: stk话题: ileft话题: result
进入JobHunting版参与讨论
1 (共1页)
r**u
发帖数: 1567
1
Develop an algorithm to find out all valid combinations of n brackets. Like
for n =3 possible combinations can be ((())) or ()()() or (()()) and so on
这个就是用个stack放'(', 然后有个output array, 如果stack不空,output这个位置
可以放'('或),如果stack空就只能放'('还有遇到(。push it to stack,遇到),pop
。然后递归,对吧。我code了一下怎么都不对,有没有谁给个code我能参考一下,谢谢
v*****u
发帖数: 1796
2
int n=3;
char stk[100];
void printlegal( int ipos, int ileft, int iright)
{
if (ipos==2*n-1)
{
stk[ipos]=')';
for (int i=0; i printf("%c", stk[i]);
printf("\n");
}else if (ileft==iright)
{
stk[ipos] = '(';
printlegal( ipos+1, ileft-1, iright );
}else if (ileft==0)
{
stk[ipos] = ')';
printlegal( ipos+1, i

【在 r**u 的大作中提到】
: Develop an algorithm to find out all valid combinations of n brackets. Like
: for n =3 possible combinations can be ((())) or ()()() or (()()) and so on
: 这个就是用个stack放'(', 然后有个output array, 如果stack不空,output这个位置
: 可以放'('或),如果stack空就只能放'('还有遇到(。push it to stack,遇到),pop
: 。然后递归,对吧。我code了一下怎么都不对,有没有谁给个code我能参考一下,谢谢
: !

k***e
发帖数: 556
3
it is similar to Catalan number but a little different in the recursive relation.
can solve it using dynamic programming in time n^2 time.

Like
pop

【在 r**u 的大作中提到】
: Develop an algorithm to find out all valid combinations of n brackets. Like
: for n =3 possible combinations can be ((())) or ()()() or (()()) and so on
: 这个就是用个stack放'(', 然后有个output array, 如果stack不空,output这个位置
: 可以放'('或),如果stack空就只能放'('还有遇到(。push it to stack,遇到),pop
: 。然后递归,对吧。我code了一下怎么都不对,有没有谁给个code我能参考一下,谢谢
: !

c*********n
发帖数: 1057
4
用recursive容易很多啊
void comb(int l,int r, char *result,int size){
//printf("%d, %d, %s\n",l,r,result);
if(l==0 && r==0){
printf("%s\n",result);
return;
}
if(l==r){
strcat(result,"(");
comb(l-1,r,result,size);
}
else if(l if(l>0 && r>0){
char *result1=calloc(size,1);
strcpy(result1,result);
strcat(r

【在 r**u 的大作中提到】
: Develop an algorithm to find out all valid combinations of n brackets. Like
: for n =3 possible combinations can be ((())) or ()()() or (()()) and so on
: 这个就是用个stack放'(', 然后有个output array, 如果stack不空,output这个位置
: 可以放'('或),如果stack空就只能放'('还有遇到(。push it to stack,遇到),pop
: 。然后递归,对吧。我code了一下怎么都不对,有没有谁给个code我能参考一下,谢谢
: !

r**u
发帖数: 1567
5
谢谢。你和vincexu的思路一样,我思路跑偏了。你的code我有一个小小疑问,你这个
放结果的string,size总是3啊,但是最后结果的length是6,这是不是有点问题?

【在 c*********n 的大作中提到】
: 用recursive容易很多啊
: void comb(int l,int r, char *result,int size){
: //printf("%d, %d, %s\n",l,r,result);
: if(l==0 && r==0){
: printf("%s\n",result);
: return;
: }
: if(l==r){
: strcat(result,"(");
: comb(l-1,r,result,size);

c*********n
发帖数: 1057
6
啊对。。。这个是大问题,memory leak了,谢谢提醒

【在 r**u 的大作中提到】
: 谢谢。你和vincexu的思路一样,我思路跑偏了。你的code我有一个小小疑问,你这个
: 放结果的string,size总是3啊,但是最后结果的length是6,这是不是有点问题?

1 (共1页)
进入JobHunting版参与讨论
相关主题
大家看看这道题code怎么写白板代码,支持O(1)时间GetMin的stack
还是career cupamazon一道面试题
还有两个题。关于判断stack grows up or down那道题
amz电面:关于用两个stacks实现一个queue 求问问道C内存的题?
bing的screening question,没回音了,帮忙看问题在哪leetcode上一题,求正解
Arista Networks面经2一家游戏公司的新鲜面经
找硬币的经典问题一道面试题
给大家看几道C 小程序也问两个算法题
相关话题的讨论汇总
话题: ipos话题: int话题: stk话题: ileft话题: result