求助站外题
  • 板块学术版
  • 楼主_k_e_v_i_n_
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/4/10 15:34
  • 上次更新2023/10/28 04:04:37
查看原帖
求助站外题
431956
_k_e_v_i_n_楼主2022/4/10 15:34

有趣的数学计算

描述

暑假期间,小明在外出游玩时经过了一条有趣的数学计算路,如下图所示。这条数学计算路以A为起点,D为终点,中间有B、C二个数字分岔路口。规定从A出发,顺次经过每个数字分岔路口,选择+、-、*、/ 四种运算符之一进行运算,当到达目的地D时,要求运算结果恰好等于E,现在请你帮助小明将所有符合上述条件的道路全部找出来。

输入

输入只有一行,是5个用空格隔开的数,表示A、B、C、D和E的值(其中A、B、C、D都是1~9的数字,E是正整数)。

输出

输出只有一行,有一个整数,表示符合条件的道路的总数。

输入样例 1

1 2 3 4 10

输出样例 1

2

原题链接

我的代码(深搜):

#include<bits/stdc++.h>
using namespace std;
int n,a[11],ans,vis[11],f;
char x[11];
void dfs(int step,int sum){
	if(sum==n){
//		for(int i=1;i<=4;i++)	cout<<x[i];
//		cout<<endl;
		ans++;
		return ;
	}
	if(step>4)	return ;
	x[step]='+';
	dfs(step+1,sum+a[step]);
	x[step]='-';
	dfs(step+1,sum-a[step]);
	if(sum!=0){
		x[step]='*';
		dfs(step+1,sum*a[step]);
	}
	if(sum!=0){
		x[step]='/';
		dfs(step+1,sum/a[step]);
	}
	
}
int main(){
	for(int i=1;i<=4;i++)	cin>>a[i];
	cin>>n;
	dfs(1,0);
	cout<<ans;
	return 0;
}

2022/4/10 15:34
加载中...