标题
构造表达式类别
综合时间限制
1S内存限制
100Kb问题描述
给定一个表示序列长度的整数n(3<=n<=9)。在序列1 2 3…n中插入‘+’,‘-’,‘ ’构造表达式,插入‘ ’表示前后两个数字构成一个整数,例如1 2 -3 -4 -5=0。
输出构造的所有表达式中,结果为0的表达式的数量,例如n=3时,只有表达式1+2-3=0,输出结果为1。输入说明
输入数据为一个整数n(n<10),表示序列长度,同时表示输入序列为“1 2 3…n”。输出说明
对于每一组数据,输出一个整数,表示构造的表达式中结果为0的表达式数量。输入样例
3输出样例
1

这道题当时卡了两天。

最后思路来自于上届大佬学长grandsleeper,

再次发表一篇题解对此题进行一个复习。

#include<stdio.h>
int a[20]={1,1};
int head,tail;
int point =1;
int n;
int ans=0;
int main(){void dfs(int );scanf("%d",&n);dfs(1);a[1]=1;printf("%d",ans);return 0;
}
void dfs(int point){int i;for(i=0;i<3;i++){if(point==n){break;}if(i==1){point++;tail=point;head=tail;a[point]=point;dfs(point);a[point]=0;point--;tail=point;if(head>tail) head=tail;continue;}if(i==2){point++;tail=point;head=tail;a[point]=-point;dfs(point);a[point]=0;point--;tail--;if(head>tail) head=point;continue;}
//表示加号和减号int p=head,q=tail;
//此处与大佬处理不一样,使用p,q来暂时储存head和tail放置在下一级dfs调用时是head和tail发生移位
//QAQ这个改了两小时
//表示中间留空的情况if(i==0){point++;int len=1;tail=point;while(a[head-1]>=10||a[head-1]<=-10){head--;}p=head,q=tail;if(a[head]>0){a[point]=point;}else {a[point]=-point;}int j;for(j=head;j<tail;j++){a[j]*=10;}//  a[point-1]=0;}int j;dfs(point);a[point]=0;for(j=p;j<q;j++){a[j]/=10;}point--;tail=point;if(head>tail)  head=tail;continue;}int sum=0;for(i=1;i<=n;i++){sum+=a[i];// printf("%d ",a[i]);}if(sum==0&&a[n]!=0){ans++;}
//  printf("%d ",sum);
//  printf("\n");sum=0;
}

此题的大致思路是即为再dfs调用后再将其复原,整体写这个题是崩溃的一天。

不过也是有的收获。

感谢大佬的文章这里粘贴个链接(大致思路一样只是在最后一个空格处理有一些问题)xdoj五星题172 构造表达式(递归思路)_grandsleeper的博客-CSDN博客xdoj五星题127 构造表达式标题构造表达式类别综合时间限制1S内存限制100Kb问题描述给定一个表示序列长度的整数n(3<=n<=9)。在序列1 2 3…n中插入‘+’,‘-’,‘ ’构造表达式,插入‘ ’表示前后两个数字构成一个整数,例如1 2 -3 -4 -5=0。输出构造的所有表达式中,结果为0的表达式的数量,例如n=3时,只有表达式1+2-3=0,输出结果为1。输入说明输入数据为一个整数n(n<10),表示序列长度,同时表示输入序列为“1 https://blog.csdn.net/grandsleeper/article/details/111772164

同时大家可以看看这篇文章对dfs有个入门了解DFS入门级(模板)_浮生未歇-CSDN博客_dfs入门DFS最近一直都在写蓝桥杯的题目,其中有许多题目涉及到了搜索(DFS,BFS)等,由于递归过于抽象,所以没能很好的掌握。于是便写下了这篇入门教程来加深对DFS的认识,并且充分理解递归。所谓DFS就是指:优先考虑深度,换句话说就是一条路走到黑,直到无路可走的情况下,才会选择回头,然后重新选择一条路。1.全排列(入门引导)引导题:输入一个数n,输出n的全排列可以先把这个问题形象化如:假如有编号为1,2,3的3张扑克牌和编号为1,2,3的3个盒子。将这3张扑克牌分别放入3个盒子一共有几种不同的放https://blog.csdn.net/m0_46549425/article/details/108025133?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164050942616780274199973%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164050942616780274199973&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-108025133.first_rank_v2_pc_rank_v29&utm_term=dfs&spm=1018.2226.3001.4187另外各位大佬们本蒟蒻还有一个问题没想通为何最后统计的时候不加a[n]!=0,ans会多出来许多 希望大家多多指教。

XDOJ-172构造表达式相关推荐

  1. #XDOJ 172 构造表达式

    先贴一下问题 构造表达式 类别 综合 时间限制 1S 内存限制 100Kb 问题描述 给定一个表示序列长度的整数n(3<=n<=9).在序列1 2 3-n中插入'+','-',' ' 构造 ...

  2. XDOJ.172 构造表达式

    题目描述: 标题 构造表达式类别 综合时间限制 1S内存限制 100Kb问题描述 给定一个表示序列长度的整数n(3<=n<=9).在序列1 2 3-n中插入'+','-',' '构造表达式 ...

  3. 成绩处理C语言xdoj,xdoj五星题172 构造表达式(递归思路)

    xdoj五星题172 构造表达式 标题 构造表达式 类别 综合 时间限制 1S 内存限制 100Kb 问题描述 给定一个表示序列长度的整数n(3<=n<=9).在序列1 2 3-n中插入' ...

  4. 【XDOJ】五星级题目--构造表达式之思路分享

    [XDOJ]五星级题目–构造表达式之思路分享 题目: 构造表达式 问题描述 给定一个表示序列长度的整数n(3<=n<=9).在序列1 2 3-n中插入'+','-',' '构造表达式,插入 ...

  5. XDOJ 172-构造表达式

    这个题作为oj上少有的五星题,难倒了大部分同学(包括我),好几次都是这做,但是总不能全对,我又在网上找了些大佬的经验,经过大佬的指导,我这才写完,总之就是函数递归的运用,好啦废话到此为止. 问题描述  ...

  6. c语言后缀表达式构造二叉树,C ++程序为后缀表达式构造表达式树

    表达式树基本上是用于表示表达式的二叉树.在表达式树中,节点对应于运算符,每个叶节点对应于操作数.这是一个C ++程序,用于按顺序,前顺序和后顺序遍历为后缀表达式构造一个表达式树. 算法Begin Fu ...

  7. python构造一个二叉树_二叉树-链表存储,用二叉树构造表达式(Python实现)

    既然用到二叉树了,直观上链表的方式比较容易接受,下面用python实现简单的二叉树.二叉树是递归结构,Python的list也是递归结构,基于list类型很容易实现二叉树: 下面是函数 def bin ...

  8. mysql构造函数_MySQL行构造器表达式优化(Row Constructor Expression)

    mysql 官方文档行构造器表达式优化(Row Constructor Expression Optimization)这一节里面,对行构造表达式及其优化进行了介绍,因为用的不多,也没太关注过.但是看 ...

  9. Lambda 表达式(=):网络摘抄,自学用,侵删。

    Lambda 表达式 Lambda 表达式"是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型. 所有 Lambda 表达式都使用 Lambda 运算符 => ...

最新文章

  1. AI时代的幕后英雄:谁在生产高质量的AI训练数据?
  2. Native与H5交互的那些事
  3. JSONEasy的用法(JSONDateHandler)
  4. Java黑皮书课后题第8章:*8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1
  5. ado.net mysql 连接池_ADO.NET数据库连接池的介绍 | 学步园
  6. Linux: Apache 安全设定
  7. Launcher3桌面Icon的文字size的 修改
  8. 前端项目,将package.json数据放到项目某处使用
  9. JasperReport:报表概述和模板制作
  10. php 四级联动插件,php四级联动
  11. MATLAB plotyy总结
  12. 《上古天真论》第五讲文字版
  13. 云班课python答案_云班课测试题答案公众号
  14. 取消检验批过账(取消检验批UD判定到Rerel,再把非限性库存转到质检库存,然后就可以取101收货了)
  15. WebStorm使用npm命令提示: ‘npm‘ 不是内部或外部命令,也不是可运行的程序的解决方法
  16. 动力电池编码追溯系统_如何保持动力以继续学习编码
  17. git下载子模块命令git clone --recursive和git submodule update --init
  18. Keep上市,流血不止
  19. iphone剪卡遭遇
  20. 微信屏蔽二维码下载APK 手机APP应用 如何解决

热门文章

  1. 算法工程师读论文思路
  2. nginx(九)find_config阶段的location指令
  3. CEO、CIO、CTO、CFO.......等释义
  4. 小场景下基于ROS的GPS经纬高度值转换为平面XYZ坐标值,并用RVIZ显示轨迹
  5. mysql中视图备份_MySQL 事务、视图、索引、备份和恢复
  6. 【Charm Bracelet】题目解析~~
  7. c语言嵌套结构体大小,C语言结构体嵌套
  8. php 路由实现_php实现路由接口 | ZJINH-Blog
  9. ConcurrentLinkedQueue非阻塞无界链表队列
  10. day8作业 三次字典循环和文件交互