poj2362 dfs
来源:互联网 发布:qq等级加速器软件 编辑:程序博客网 时间:2024/05/22 16:03
给一些棍子,问能否围成一个正方形(必须全部用上)。
这么写的DFS就TLE了:
void dfs(int k,int id,int res) { if (k==5) {g = true;return; } for (int i=id;i<=n;i++) { if (!v[i] && res>=a[i]) { v[i] = true; if (res==a[i]) dfs(k+1,1,sum/4); else dfs(k,i+1,res-a[i]); v[i] = false; } }}
AC:
#include <iostream>#include <algorithm>using namespace std;bool v[100],f,g;int a[100],maxi,sum,n,cas;bool cmp(int a,int b) { if (a>b) return true; else return false;}bool dfs(int k,int id,int res) { if (k==5) return true; for (int i=id;i<=n;i++) { if (!v[i] && res>=a[i]) { v[i] = true; if (res==a[i]) { if (dfs(k+1,1,sum/4)) return true; } else if (dfs(k,i+1,res-a[i])) return true; v[i] = false; } } return false;} int main() { scanf("%d",&cas); while (cas--) { maxi = 0; sum = 0; scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&a[i]); if (a[i] > maxi) maxi = a[i]; sum += a[i]; } f = true;g = false; if (sum%4!=0 || maxi>sum/4) f = false; else { sort(a+1,a+n+1,cmp); memset(v,0,sizeof(v)); g = dfs(1,1,sum/4); } if (f && g) printf("yes\n"); else printf("no\n"); } return 0;}
- poj2362 dfs
- POJ2362(DFS)
- 1poj2362(dfs剪枝)
- POJ2362:Square(DFS)
- poj2362 DFS+剪枝
- POJ2362 Square(dfs)
- POJ2362 DFS+剪枝
- POJ2362 Square(dfs)
- poj2362 Square DFS剪枝
- POJ2362
- poj2362
- poj2362
- poj2362
- poj2362
- poj2362
- POJ2362
- poj2362
- poj2362——Square(深搜dfs)
- 单片机程序中遇到的错误和警告小结
- 《赢在中国》经典语录
- 下载频道积分规则
- 使用X11VNC
- ubuntu下设置java环境变量
- poj2362 dfs
- .Net应用程序发布的解决方案[最新整理](可加桌面快捷、在程序中加自己的ICO及自动卸载等)
- C# DataTable 中DataRow的RowState
- Android程序启动画面之Splash总结
- 角色扮演游戏中敌人AI(人工智能)的设计方法
- 黑马程序员——Socket网络编程聊天室
- Android成长之路-实现手机号归属地查找的应用
- Could not find generator devise:install.
- java一行一行写入或读取数据