我先把问题链接贴出来吧。
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;
}
自问自答吧,,哈哈,其实原因很鸡肋的啦。。我多输出了一个感叹号。
改成这样就好啦。