一道简单的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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自问自答吧,,哈哈,其实原因很鸡肋的啦。。我多输出了一个感叹号。
改成这样就好啦。
没有在上面跑过。
但是
scanf
函数声明在头文件<cstdio>
里。必须要包括
<cstdio>
这个头文件