POJ 2362:Square 觉得这才算深度搜索
| Time Limit: 3000MS | Memory Limit: 65536K | |
| Total Submissions: 21821 | Accepted: 7624 |
Description
Input
Output
Sample Input
3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5
Sample Output
yes
no
yes
这个题和POJ1011觉得真的是两道特别棒的题目,仔细琢磨很有味道。这个题一开始输出大写的YES和NO导致WA了一次。。。
题意是给你M根木棒,接下来给你每根木棒的长度,问这些木棒是否能够构成一个正方形。
具体理解见代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; int num_s,flag,sum;
int stick[25];
bool visit[25]; bool dfs(int num,int length,int stick_st,int * stick,bool *visit)
{
if(num==4)
return true;
int i;
for(i=stick_st;i<=num_s;i++)
{
if(visit[i])continue; visit[i]=true;
if(length+stick[i]<(sum/4))
{
if(dfs(num,length+stick[i],i+1,stick,visit))
{
return true;
}
}
else if(length+stick[i]==(sum/4))
{
if(dfs(num+1,0,1,stick,visit))
{
return true;
}
}
visit[i]=false;
}
return false;
} bool cmp(const int a,const int b)
{
return a>b;
} int main()
{
int Test,i;
cin>>Test; while(Test--)
{
cin>>num_s;
sum=0;
flag=0;
for(i=1;i<=num_s;i++)
{
cin>>stick[i];
visit[i]=false;
sum += stick[i];
}
if(num_s<4||sum%4)//剪枝1:如果木棒数量小于4,cut。
//剪枝2:如果sum的和不能整除4,cut。
{
cout<<"no"<<endl;
}
else
{
sort(stick+1,stick+1+num_s,cmp);
if(stick[1]>sum/4)//剪枝3:如果最大的一根木棒大于了sum/4,cut。
cout<<"no"<<endl;
else
{
if(dfs(1,0,1,stick,visit))//第一个数代表当前要完成的第几根木棒
//第二个数代表当前已经完成的长度
//第三个数代表从第几个木棒开始查找的
{
cout<<"yes"<<endl;
}
else
{
cout<<"no"<<endl;
}
}
}
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
POJ 2362:Square 觉得这才算深度搜索的更多相关文章
- DFS POJ 2362 Square
题目传送门 /* DFS:问能否用小棍子组成一个正方形 剪枝有3:长的不灵活,先考虑:若根本构不成正方形,直接no:若第一根比边长长,no 这题是POJ_1011的精简版:) */ #include ...
- POJ 2362 Square DFS
传送门:http://poj.org/problem?id=2362 题目大意: 给一些不同长度的棍棒,问是否可能组成正方形. 学习了写得很好的dfs 赶紧去玩博饼了.....晚上三个地方有约.... ...
- POJ 2362 Square
题意:给n个木棍,问能不能正好拼成一个正方形. 解法:POJ1011的简单版……不需要太多剪枝……随便剪一剪就好了……但是各种写屎来着QAQ 代码: #include<stdio.h> # ...
- 54.1 怎样才算学会django? 知道这28个知识点才算会django2
学到什么程度才算会django了?这篇文章帮你梳理一下 关于django2的28个不可不知的知识点总结: 1.cookie操作: -客户端本地存储的键值对 2.session操作: -服务器端可以保存 ...
- Java进阶(二十)解疑答惑之何时字符串才算真正为空?
解疑答惑之何时字符串才算真正为空? 在一次编码过程中,有一个现象一直困扰着自己,经过后台的不断调试,才发现原来有时候字符串的空非空.测试代码如下: // medname可为药品名称或药品ID Stri ...
- ZT 怎么样才算熟悉设计模式? [问题点数:40分,结帖人jiaoyun007]
http://bbs.csdn.net/topics/390448668?page=1#post-394406161 近日面试,因为个人简历里有“熟悉设计模式”这句话,面试官边侃侃发问了:什么是装饰模 ...
- 洛谷P1605 迷宫 深度搜索 模板!
题目背景 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右四种方式,每次只能移 ...
- F - 蜘蛛牌(深度搜索)
Problem Description 蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么 ...
- 题目--oil Deposits(油田) 基础DFS(深度搜索)
上一次基本了解了下BFS,这次又找了个基本的DFS题目来试试水,DFS举个例子来说就是 一种从树的最左端开始一直搜索到最底端,然后回到原端再搜索另一个位置到最底端,也就是称为深度搜索的DFS--dep ...
随机推荐
- SimpleAuthenticationInfo
public SimpleAuthenticationInfo(Object principal, Object hashedCredentials, ByteSource credentialsSa ...
- brew services start redis 无法使用问题排查
起因 Mac上使用brew services start --all指令同时启动多个服务显示成功 但是,连接四个服务所在端口均无响应. 仔细核对过brew指令启动服务使用的路径.配置文件路径均无问题. ...
- 关于dom树
当用户访问ip地址,比如 ==www. aa .com/bb/cc/dd.html== 正常情况下是访问一个叫aa.com的服务器里的bb文件夹里的cc文件夹里的dd.html这个文件(其实很多情况都 ...
- Django(十二)视图--利用jquery从后台发送ajax请求并处理、ajax登录案例
一.Ajax基本概念 [参考]:https://www.runoob.com/jquery/jquery-ajax-intro.html 异步的javascript.在不全部加载某一个页面部的情况下, ...
- flask邮箱注册问题
app/models.py self.confirmed = True db.session.add(self) db.session.commit() 这里的数据修改完后必须commit提交上去,不 ...
- [ cocos2d-JS ] 启动项目
1, 打开windows命令行 2, cd 到项目的文件夹 3, 执行 cocos run -p web
- Tomcat添加SSL安全认证
环境 Tomcat7.阿里SSL证书 server.xml <Connector port="443" protocol="org.apache.coyote.ht ...
- 二十四、SAP中打开帮助文件
一.在代码输入界面,选中一个关键词,按一下F1,或者问号 二.显示出的帮助内容
- jQuery获取display为none的隐藏元素的宽度和高度的解决方案
1.利用给元素添加行内样式:visibility:hidden;display:block 2.让隐藏元素变成有物理尺寸存在,但不可见,获取元素宽高 3.再给它还原成display为none,去除vi ...
- 第二阶段scrum-5
1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 注册登陆界面功能正在实装,前端制作完成 数据库配置中