heu oj 1011 square
这道题我想了很久,一直想不出来……
是看了师兄的解题报告
仔细研究了很久才有点明白的
#include <stdio.h> #include <stdlib.h> #define NUM 21 int n,l[NUM],sum,used[NUM],edge,find; int cmp(const void *a,const void *b) { return *(int *)b-*(int *)a; } void dfs(int cur,int curlen,int m); void square(int m)// 如果进入这个函数 有两种可能 一种是从主函数进入 另一种是从dfs 进入 如果从dfs进入 就证明已经成功的构造了一条边 但是 不证明这样的进入会有什么结果 { if(find==1)return;//是退出的第一个端口 if(m==1) { find=1; return;// 和上一句的功能不太一样,这一句是 } else { int i=0; for(;i<n;i++) if(!used[i])break;//找到第一个没有使用过的木条 每次都按照一样的顺序去查找 免去了重复的步骤 used[i]=1; dfs(i,l[i],m); used[i]=0;//如果走到这一步,证明现在的木棍不能和之前一同构成边,也就是要从此再次回溯到上一个边 对下一种可能进行判断,也很重要 } return; } void dfs(int cur,int curlen,int m) { if(find==1)return;//中途递归时防止进步调用函数返回 if(curlen==edge) { square(m-1); return; } else { for(int i=cur+1;i<n;i++) //从当前进入木棒的下一个开始查找 if(!used[i]) { if(curlen+l[i]<=edge) { used[i]=1; dfs(i,curlen+l[i],m); used[i]=0;//此处至关重要,像是二叉树的回溯,如果此处构不成 那么就将检查它的下一处 同时将它的标记归零 } } } } int main() { int test; scanf("%d",&test); while(test--) { scanf("%d",&n); sum=0; for(int i=0;i<n;i++) { scanf("%d",&l[i]); sum+=l[i]; used[i]=0; } if(sum%4!=0)printf("no/n"); else { qsort(l,n,sizeof(l[0]),cmp); edge=sum/4; if(edge<l[0])printf("no/n"); else { find=0; square(4); if(find==1)printf("yes/n"); else printf("no/n"); } } } return 0; }
heu oj 1011 square相关推荐
- Heu OJ 解题报告索引
Heu OJ 百题解: 1001:http://www.cnblogs.com/lzj-0218/p/3211971.html 3201:http://www.cnblogs.com/lzj-0218 ...
- bjfu oj 1011 将浮点数转换为分数相除的形式
http://acm.bjfu.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1011 被编译器坑的我眼泪流下来,,VC6 ...
- 九度OJ 1011:最大连续子序列 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...
- HAUT OJ 1011:圆柱体表面积
题目描述 输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上.要求定义圆周率为如下宏常量 #define PI 3.14159 输入 输入两个实数,为圆柱体的底面半径r和高h. 输出 输出 ...
- ACM HEU OJ 1019 Ferry Loading II || POJ 2336
题意:摆渡问题,一个船一次最多能运送n辆汽车.现有m辆汽车需要运送,运输一次的时间为t,求出运送完所有的汽车后的最小时间以及最小的运输次数. 贪心思想:如果m%n==0则运输m/n次 反之则运输 m+ ...
- 北邮OJ 2016 网预-Square Coins
时间限制 1000 ms 内存限制 65536 KB 题目描述 Artoria, also known as Saber-chan, was born into a time of chaos and ...
- 九度OJ 题目1011:最大连续子序列
题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大 ...
- UVa10639 Square Puzzle(WA)
例子通过了,并且udebug上的例子也通过了,但是提交还是错误. 针对特殊情况: 3 4 7 0 2 1 2 2 3 3 2 4 2 4 4 0 4 7 0 0 4 0 4 2 3 2 2 1 1 2 ...
- 杭电OJ分类题目(3)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...
最新文章
- python configparser 参数 用法
- 洛谷 P1985 翻转棋
- 呼叫中心的技术创新源于管理文化的变革
- ZedGraph设置辅助线
- 星巴克全面上线美团外卖 并联合美团推出“1971客厅”
- 12月3号 命名规范和运算符的使用
- linux 运行级别,linux执行流程 /etc/rc.d/init.d目录理解
- Ruijie SSL V P N 垂直越权漏洞
- 如何批量把照片设置统一尺寸?
- 数学建模【开会总结】
- selenium.common.exceptions.WebDriverException: Message: 'geckodriver' execut
- 中粮营销致远A6应用探秘:高速审批执行,营销策略落地
- 计算机摇号分析,北京市小客车指标管理信息系统
- 上海居住证转户口证攻略
- 移动电源给路由器供电
- [转]优秀的计算机编程类博客 和 文章
- 求解非线性方程组的牛顿法c语言,牛顿下山法求解非线性方程(组)(C实现)...
- 复现《Region Filling and Object Removal by Exemplar-Based Image Inpainting》
- 敲七 STL队列(c++)
- Java的GUI编程---贪吃蛇游戏实现
热门文章
- 在Win10下安装Anaconda3,“开始”菜单目录下只有Anconda prompt怎么办
- [转]Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
- 数字音频总线A2B开发详解十一(A2B一Slave板做音效处理-31段EQ,高中低音分频,延时,3D音效等)
- [CodeChef FEB15]Payton numbers(CUSTPRIM)解题报告
- 【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)
- 使用samtools来对sam/bam/cram相互转换
- 游戏画质提升1《X战警金刚狼前传》画质增强修改
- html5 3d背景墙,3D背景墙的价格怎样?3D背景墙的介绍?
- 【漏洞复现】shiro 反序列化 (CVE-2016-4437)
- 关于requests.exceptions.SSLError: HTTPSConnectionPool(host='XXX', port=443)问题