1103 计算等式

1103 计算等式

题目描述

编程在算式123_45_67_8_9=N的下划线部分填上加号(+)或减号(-),使该等式成立。要求程序运行时输出该等式。(保证数据存在满足的等式)

输入要求

输入一个整数N。

比如 100

输出要求

输出满足条件的等式。若不存在满足的等式,则输出"impossible"(输出不包括引号)
比如 123+45-67+8-9=100

AC代码

暴力枚举就可以了

#include <bits/stdc++.h>
using namespace std;
int f=0,n;
char ch[4];
int num[4]={45,67,8,9};
void dfs(int x,int sum)
{
	if(f) return ; //减支 
	if(x==4) 
	{
		if(sum==n) 
		{
			f=1;
			printf("123%c45%c67%c8%c9=%d
",ch[0],ch[1],ch[2],ch[3],n);
		}
		return ;
	}
	ch[x] ='+';
	dfs(x+1,sum+num[x]); //加法
	ch[x] ='-';
	dfs(x+1,sum-num[x]); //减法 
}
int main()
{
	cin>>n;
	dfs(0,123);
	if(!f)  cout<<"impossible"<<endl;
	return 0; 
}  
原文地址:https://www.cnblogs.com/xxhao/p/14301495.html