一道dfs题目
来源:互联网 发布:java桌面开发框架 编辑:程序博客网 时间:2024/04/30 19:09
题意:给出一些长度的线段,不能把这些线段切开,平均分成四组。问是不是可能做到。
这道题很容易超时,优化方式有两个,一个就是对于第一条线段,默认把它放在第一组。第二个就是在枚举每一条边的线段组成时,都只要从上一条所选取得线段后面一条开始枚举即可。
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define N 100using namespace std;int T, n, s, f, flag[N], a[N], b[N];bool dfs(int d, int l, int t){ if (d > 4) return true; if (l == s/4) { b[0] = 0; if (dfs(d+1, 0, 1)) return true; return false; } for (int i = b[t-1]+1; i <= n; i++) if (flag[i] == 0) { flag[i] = 1; b[t] = i; if (dfs(d,l+a[i],t+1)) return true; flag[i] = 0; } return false;}int main(){ scanf("%d", &T); while (T--) { scanf("%d", &n); s = 0; f = 0; for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); s += a[i]; } if (s % 4 != 0) f = 1; if (f == 0) { memset(flag, 0, sizeof(flag)); b[1] = 1; flag[1] = 1; if (dfs(1,a[1],2)) printf("yes\n"); else printf("no\n"); } else printf("no\n"); } return 0;}
0 0
- 一道dfs题目
- Generate Parentheses一道普通dfs题目
- 一道题目
- 一道题目
- 一道题目
- 一道题目
- 一道题目
- DFS题目
- Jangalestan--一道DFS
- HDU1010第一道DFS
- dfs好题一道
- 一道逻辑测试题目!
- 一道有趣的题目
- 一道Java面试题目
- 一道SQL题目
- 一道用递规做的题目
- 一道算法题目,值得一看
- 一道面试题目
- ros 初始化和关闭
- nasm汇编语言小程序:计算多个指定位置的Fibonacci值
- MAC 如何修改host
- html <a>标签属性总结
- 包贝尔婚礼事件中,有哪些嘈可以吐?
- 一道dfs题目
- C# : 读取简单的XML文件
- C#+一般处理程序+jquery.uploadify 上传XML文件并插入数据库中
- wordpress 移动客户端(安卓,ios)
- js--引用类型Array--1.Array的基础知识
- Linux rpm 命令参数使用详解[介绍和应用]
- java热加载技术hotswap
- 软件设计
- 1142: 【C语言训练】立方和不等式