-->
当前位置:首页 > 题库 > 正文内容

程序填空题:1-9数字间插入加减号计算结果为100问题(回溯法)

Luz4年前 (2021-06-19)题库1060
设计一个算法在1、2、...、9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
### 输出格式:
逐行输出每个解
### 输出样例1:
```out
1+2+3-4+5+6+78+9=100
1+2+34-5+67-8+9=100
1+23-4+5+6+78-9=100
1+23-4+56+7+8+9=100
12+3+4+5-6-7+89=100
12+3-4+5+67+8+9=100
12-3-4+5-6+7+89=100
123+4-5+67-89=100
123+45-67+8-9=100
123-4-5-6-7+8-9=100
123-45-67+89=100
```

```c++
#include 
#define N 9
void fun(char op[],int sum,int prevadd,int a[],int i)
{
	if ()						//扫描完所有位置
	{
		if ()				//找到一个解
		{
			printf("%d",a[0]);	//输出解
			for (int j=1;j0)
		tmp=prevadd*10+a[i];		//如prevadd=5,a[i]=6,结果为56
	else
		tmp=prevadd*10-a[i];		//如prevadd=-5,a[i]=6,结果为-56
	sum+=tmp;						//计算合并结果
	fun();			//继续处理下一个位置
	sum-=;						//回溯sum
	sum+=;
}
int main()
{
	int a[N];
	char op[N];					//op[i]表示在位置i插入运算符
	for (int i=0;i
答案: 第1空:i==N 第2空:sum==100 第3空:op,sum,a[i],a,i+1 第4空:sum-=a[i] 第5空:op,sum,-a[i],a,i+1 第6空:sum+=a[i] 第7空:op,sum,tmp,a,i+1 第8空:tmp 第9空:prevadd


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。