boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教个问题,这个程序错在哪里?
相关主题
今天一个很怪异的面试题目
问个C++题
bloomberg相关的面试题
为什么我的这个dynamic解法有错误
array of pointers to functions
请问以下程序运行结果
【字符指针题】求帮助?
[算法]打印所有因子乘积组合
二维数组参数怎么传好?
问一道题目
相关话题的讨论汇总
话题: count话题: int话题: print话题: void
进入JobHunting版参与讨论
1 (共1页)
g********n
发帖数: 447
1
就是打印出成对的括号,比如()(),(()).
我的code是这样,可是结果总是不对,请帮忙看看哪里有问题?谢谢
public void printbrackets(int l, int r, int count){
if(l==count && r==count){
System.out.println("\n");
return;
}
if(l System.out.print("(");
printbrackets(l+1, r, count);
}
if(r System.out.print(")");
printbrackets(l, r+1, count);
}
}
void main(){
printbrackets(0,0,2);
}
f********4
发帖数: 988
2
如果L是1,R是2,这种是不可以的,貌似没有filter掉,你看看是不是。。。
d**e
发帖数: 6098
3
问题在于用了print,这个不是print结果,而只是在执行过程中print,但同一个print
完就不会print第二次。比如print("(")在print完\n后就不会print第二次。
应该将结果存起来,在你print("\n")那里print完整结果。
public void printbrackets(int l, int r, int count, String result) {
if (l == count && r == count) {
System.out.println(result);
return;
}
if (l < count) {
printbrackets(l + 1, r, count, result + "(");
}
if (r < l) {
printbrackets(l, r + 1, count, result + ")");
}
}
call printbracket(0, 0, n, "")

【在 g********n 的大作中提到】
: 就是打印出成对的括号,比如()(),(()).
: 我的code是这样,可是结果总是不对,请帮忙看看哪里有问题?谢谢
: public void printbrackets(int l, int r, int count){
: if(l==count && r==count){
: System.out.println("\n");
: return;
: }
: if(l: System.out.print("(");
: printbrackets(l+1, r, count);

g********n
发帖数: 447
4
这样子,我改了一下,结果正确了,谢谢你。

print

【在 d**e 的大作中提到】
: 问题在于用了print,这个不是print结果,而只是在执行过程中print,但同一个print
: 完就不会print第二次。比如print("(")在print完\n后就不会print第二次。
: 应该将结果存起来,在你print("\n")那里print完整结果。
: public void printbrackets(int l, int r, int count, String result) {
: if (l == count && r == count) {
: System.out.println(result);
: return;
: }
: if (l < count) {
: printbrackets(l + 1, r, count, result + "(");

g********n
发帖数: 447
5
恩,这个special case也没有考虑到。

【在 f********4 的大作中提到】
: 如果L是1,R是2,这种是不可以的,貌似没有filter掉,你看看是不是。。。
l***e
发帖数: 303
6
直接给if(r void printbrackets(int l, int r, int count){
if(l==count && r==count){
printf("\n");
return;
}
if(l printf("(");
printbrackets(l+1, r, count);
}
else if(r printf(")");
printbrackets(l, r+1, count);
}
}

print

【在 d**e 的大作中提到】
: 问题在于用了print,这个不是print结果,而只是在执行过程中print,但同一个print
: 完就不会print第二次。比如print("(")在print完\n后就不会print第二次。
: 应该将结果存起来,在你print("\n")那里print完整结果。
: public void printbrackets(int l, int r, int count, String result) {
: if (l == count && r == count) {
: System.out.println(result);
: return;
: }
: if (l < count) {
: printbrackets(l + 1, r, count, result + "(");

d**e
发帖数: 6098
7
这样似乎不行,因为当有了第一个“(”的时候,“(”和“)”是并存的case,不应
该用else if.

【在 l***e 的大作中提到】
: 直接给if(r: void printbrackets(int l, int r, int count){
: if(l==count && r==count){
: printf("\n");
: return;
: }
: if(l: printf("(");
: printbrackets(l+1, r, count);
: }

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一道题目
有简洁树代码么
前面那google题删贴了?
请教一段小程序
听说binary search程序非常难写对,是吗?
问一个atoi overflow的问题
3-way Partition 算法不容易
vc中<<的操作
求两个有序数组的median的平凡解法?
微软面试题
相关话题的讨论汇总
话题: count话题: int话题: print话题: void