一道简单的ACM递归题?

我先把问题链接贴出来吧。
http://www.jisuanke.com/course/8/349
代码在我这里是跑出来了,不过到这官网的测试时就挂掉了。各位看官可以试一下,如果哪位在上面跑通了,麻烦回答一下。谢谢,我也献丑一下。撸个自己的。

#include <iostream>
using namespace std;
int n; 
bool opr[10]; 
bool found = false; 
void dfs(int deep, int sum) {
    // 请在下面的条件表达式中填上对应的值。
    if(deep==n) {
        if(sum==0){
            found = true;
            for(int i=1;i<=n;i++){
                cout<<i;
                if(i!=n && opr[i]==true)
                    cout<<" + ";
                else if(i!=n && opr[i]==false)
                    cout<<" - ";
            }
            cout<<endl;
        }
        return;
    }
    if(deep==1)
        sum=1;
    opr[deep]=true;
    dfs(deep+1,sum+deep+1);
    opr[deep] = false;
    dfs(deep+1,sum-deep-1 );

}
// main函数请自己完成哦,加油~
int main() {
    scanf("%d",&n);
    dfs(1,0);
    if(found==false)
        cout<<"None!"<<endl;
    return 0;
}
阅读 4k
2 个回答

自问自答吧,,哈哈,其实原因很鸡肋的啦。。我多输出了一个感叹号。

cout<<"None"<<endl;

改成这样就好啦。

没有在上面跑过。
但是scanf函数声明在头文件<cstdio>里。
必须要包括<cstdio>这个头文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题