有一个未完成的等式:1 2 3 4 5 6 7 8 9=N 空格(1前面没有空格)内可以填入+,-,也可以不填。 编程找出输入某个整数 N 后使等式成立的所有方案的总数。保证有解。
for循环里面具体细节还不是特别理解- -
#include <iostream>
//1 2 3 4 5 6 7 8 9=N
using namespace std;
int ans = 0,N;
void dfs(int dep , int sum)
{
int tmp = 0;
if(sum == N && dep>9)
{
ans++;
}
else for(int i = dep ; i <= 9 ; i++)
{
tmp = tmp * 10 + i;
dfs(i+1,sum+tmp);
if(dep!=1)
dfs(i+1,sum-tmp);
}
}
int main()
{
N=108;
dfs(1,0);
cout<<ans<<endl;
return 0;
}