在表达式“123456789=100”左边的适当位置插入运算符“+”、“-”,如何使等式成立?

csz_cmy 2001-11-23 09:01:16
#include "stdafx.h"
char str[19]="-1-2-3-4-5-6-7-8-9";
int Count=0;
void Calc(int n,int m,int v)
{
if(n==10)
{
if(v==100) printf("%d %s\n",++Count,str);
return;
}
for(int i=m,x=0;i<=n;i++) x=x*10+i;

str[(m-1)*2]='+'; Calc(n+1,n+1,v+x);
str[(m-1)*2]='-'; Calc(n+1,n+1,v-x);
str[(m-1)*2]=' '; Calc(n+1,m,v);
}
int main(int argc, char* argv[])
{
printf("Hello World!\n");
Calc(1,1,0);//'1'前可有‘-’
return 0;
}
请大家对这一算法评价一下...
...全文
190 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xufen340 2001-11-23
  • 打赏
  • 举报
回复
你能告诉我你的算法思路吗?
lizhenguo 2001-11-23
  • 打赏
  • 举报
回复
不用考虑运算顺序吗?
lxp981818 2001-11-23
  • 打赏
  • 举报
回复
好!以这种方法可解24点之类的问题,也就是穷举吗,每一个数字后面有三种可能用v来计算结果

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧