蓝桥杯18模拟C

结果填空:加减乘

请对于下面式子进行填空,填入加减乘,使这个表达式成立。

1 2 3 4 5 6 7 8 9 10 = 0

请输出一共有多少种方案可以使得表达式成立。

要注意结合律。
code:

#include<iostream>
using namespace std;
int f[11]={0,1,2,3,4,5,6,7,8,9,10};

int a_b(int a,char c,int b) { if(c=='+') return a+b; return a-b;}


int dfs(int a,char c,int b,int cnt)
{
	if(cnt==11) return a_b(a,c,b)==0;
	return dfs(a_b(a,c,b),'+',f[cnt],cnt+1)+dfs(a_b(a,c,b),'-',f[cnt],cnt+1)+dfs(a,c,b*f[cnt],cnt+1);
}

int main()
{
	cout<<dfs(0,'+',1,2)<<endl;
	return 0;
}
    
原文地址:https://www.cnblogs.com/Hunter01/p/12436344.html