趣味算式
来源:互联网 发布:java 24小时格式 编辑:程序博客网 时间:2024/05/01 04:45
#include <stdio.h>int a[8],cur;int v[8][3]={{2,-2,11},{3,-3,21},{4,-4,31},{5,-5,41},{6,-6,51},{7,-7,61},{8,-8,71},{9,-9,81}};char symbol[3]="+-";//输出时,把0,1,2转化为+-空void print(){ int i; for(i=0;i<8;i++) { printf("%d",i+1); if(a[i]!=2) putchar(symbol[a[i]]); } printf("9\n");}void backtrack (int k){ int i; if (k==8) {if(cur==110)print();return;} for (i=0;i<=2;i++) { a[k]=i; if (i==2&&k>0&&a[k-1]==1) {cur-=v[k][i]; backtrack(k+1);cur+=v[k][i];} else if (i==2&&k>0&&a[k-1]==2) continue;//如果当前位置和前1个位置都是空,则排除,回溯过程确保不出现这种情况 else {cur+=v[k][i]; backtrack(k+1);cur-=v[k][i];} }}int main(){ cur=1; backtrack(0); //无3个数连在一起的情形 cur=123; a[0]=a[1]=2; //最前面为123连在一起 backtrack(2); cur=235;a[0]=0,a[1]=a[2]=2; backtrack(3); //最前面为1+234}
题目描述
匪警请拨110,即使手机欠费也可拨通!
为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!
某批警察叔叔正在进行智力训练:
1 2 3 4 5 6 7 8 9 = 110;
请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。
要求你编程找出所有符合条件的算式。
输入
无
输出
每个答案占一行。形如:
12+34+56+7-8+9
123+4+5+67-89
......
样例输入
样例输出
1+2+34+5+67-8+91-2+3+45-6+78-912+3+45+67-8-912+34+56+7-8+912-3+4-5+6+7+89123+4+5+67-89123+4-5-6-7-8+9123-4+5-6-7+8-9123-4-5+6+7-8-91+234-56-78+9
提示
不可能出现4个数连在一起的情形,3个数连在一起的情形,也只可能是123和1+234,把这2个作为特殊情形,特殊处理,前面的符号预先固定,从后面开始回溯。
- 趣味算式
- 趣味算式
- 趣味算式
- 趣味算式
- 软件大赛--趣味算式
- 南桥杯Java趣味算式
- 蓝桥杯 趣味算式
- 趣味算式填符号
- 蓝桥杯之趣味算式
- java 蓝桥杯 趣味算式
- 趣味算式(蓝桥杯)
- 【蓝桥杯】【趣味算式】
- 填符号凑算式 趣味算式
- 算法题 趣味算式110
- 趣味算式 蓝桥杯 110 递归
- 蓝桥杯——趣味算式
- 第三届蓝桥杯预赛java趣味算式
- 趣味编程题——猜算式
- OpenGL入门学习[十]
- Spinner使用
- OpenGL入门学习[十一]
- hama源代码编译与调试
- 你必须知道的JQuery
- 趣味算式
- ubuntu 使用移动硬盘出现无法挂载(解决办法)
- 总结调用Flash的几种方法
- OpenGL入门学习[十二]
- 你必须知道的JQuery
- Java RMI 入门指南
- Scala in Eclipse using Maven
- OpenGL入门学习[十三]
- 冒泡排序、选择排序、插入排序