HDU 1518 Square 搜索
来源:互联网 发布:手机淘宝联盟自己购买 编辑:程序博客网 时间:2024/05/01 06:50
题目大意:输入n个木棍长度,判断能否组成一个正方形
思路:深搜,并通过几种方法剪枝使时间复杂度降低
#include <iostream>#include<algorithm>using namespace std;int sum, n, len[21], flag;bool isok[21];bool cmp (int a, int b){ return a<b;}void dfs(int lens, int cnt, int left, int th){ if(cnt == 3 && left == sum) { flag = 1; return; } if(lens == sum) { dfs(0, cnt + 1, left, 0); return; } for(int i = th; i < n; i ++ ) { if(i != 0) if(len[i] == len[i-1] && isok[i-1]) continue; if(lens + len[i] <= sum && isok[i] && ! flag) { isok[i] = false; dfs(lens + len[i], cnt, left - len[i], i + 1); isok[i] = true; } }}int main(){ int t; cin >> t; while(t -- ) { flag = 0; sum = 0; cin >> n; for(int i = 0; i < n; i ++ ) { cin >> len[i]; isok[i] = true; sum += len[i]; } sort(len, len + n); if(sum % 4 != 0 || n < 4 || sum / 4 < len[n - 1]) { cout << "no" <<endl; continue; } sum /= 4; dfs(0, 0, 4 * sum, 0); if(flag) cout << "yes" << endl; else cout << "no" <<endl; }}
0 0
- HDU-1518 Square 搜索
- HDU 1518 Square 搜索
- HDU 1518 Square 搜索
- HDU 1518 Square 搜索
- 【暴力搜索】[HDU 1518]Square
- hdu 1518 square (DFS)搜索
- hdu 1518 Square (dfs搜索可参考poj1011)
- HDU 1518 Square(回溯搜索,减枝很巧妙啊)
- hdu 4394 Digital Square 记忆化搜索
- hdu 4394 Digital Square(搜索:DFS)
- dfs hdu 1518 square
- hdu 1518 Square (DFS)
- hdu 1518 Square
- HDU 1518 Square
- Hdu 1518 - Square
- HDU 1518 - Square
- HDU 1518 Square
- HDU 1518 Square
- 括号配对问题
- lasrevarTredrotsoPeerTyraniB.145
- 《C语言程序设计(第二版新版)》第三章习题解答(部分)
- java单例模式
- 钢琴白块之画轨道
- HDU 1518 Square 搜索
- Python学习笔记(一)
- SharedPreference 工具类
- CSS3弹性布局align-items和align-self垂直轴方向行对齐属性详解及实例
- C++工作现在需求怎么样,如何应对
- 快速幂
- Android中Notification的使用
- PAT-A1061 Dating (20)(模拟)
- 统计你的手机号码中出现次数最多的数字,并打印出此数字及其出现次数