这道题我想了很久,一直想不出来……

是看了师兄的解题报告

仔细研究了很久才有点明白的

#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相关推荐

  1. Heu OJ 解题报告索引

    Heu OJ 百题解: 1001:http://www.cnblogs.com/lzj-0218/p/3211971.html 3201:http://www.cnblogs.com/lzj-0218 ...

  2. bjfu oj 1011 将浮点数转换为分数相除的形式

    http://acm.bjfu.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1011 被编译器坑的我眼泪流下来,,VC6 ...

  3. 九度OJ 1011:最大连续子序列 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...

  4. HAUT OJ 1011:圆柱体表面积

    题目描述 输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上.要求定义圆周率为如下宏常量 #define PI 3.14159 输入 输入两个实数,为圆柱体的底面半径r和高h. 输出 输出 ...

  5. ACM HEU OJ 1019 Ferry Loading II || POJ 2336

    题意:摆渡问题,一个船一次最多能运送n辆汽车.现有m辆汽车需要运送,运输一次的时间为t,求出运送完所有的汽车后的最小时间以及最小的运输次数. 贪心思想:如果m%n==0则运输m/n次 反之则运输 m+ ...

  6. 北邮OJ 2016 网预-Square Coins

    时间限制 1000 ms 内存限制 65536 KB 题目描述 Artoria, also known as Saber-chan, was born into a time of chaos and ...

  7. 九度OJ 题目1011:最大连续子序列

    题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大 ...

  8. 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 ...

  9. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

最新文章

  1. python configparser 参数 用法
  2. 洛谷 P1985 翻转棋
  3. 呼叫中心的技术创新源于管理文化的变革
  4. ZedGraph设置辅助线
  5. 星巴克全面上线美团外卖 并联合美团推出“1971客厅”
  6. 12月3号 命名规范和运算符的使用
  7. linux 运行级别,linux执行流程 /etc/rc.d/init.d目录理解
  8. Ruijie SSL V P N 垂直越权漏洞
  9. 如何批量把照片设置统一尺寸?
  10. 数学建模【开会总结】
  11. selenium.common.exceptions.WebDriverException: Message: 'geckodriver' execut
  12. 中粮营销致远A6应用探秘:高速审批执行,营销策略落地
  13. 计算机摇号分析,北京市小客车指标管理信息系统
  14. 上海居住证转户口证攻略
  15. 移动电源给路由器供电
  16. [转]优秀的计算机编程类博客 和 文章
  17. 求解非线性方程组的牛顿法c语言,牛顿下山法求解非线性方程(组)(C实现)...
  18. 复现《Region Filling and Object Removal by Exemplar-Based Image Inpainting》
  19. 敲七 STL队列(c++)
  20. Java的GUI编程---贪吃蛇游戏实现

热门文章

  1. 在Win10下安装Anaconda3,“开始”菜单目录下只有Anconda prompt怎么办
  2. [转]Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
  3. 数字音频总线A2B开发详解十一(A2B一Slave板做音效处理-31段EQ,高中低音分频,延时,3D音效等)
  4. [CodeChef FEB15]Payton numbers(CUSTPRIM)解题报告
  5. 【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)
  6. 使用samtools来对sam/bam/cram相互转换
  7. 游戏画质提升1《X战警金刚狼前传》画质增强修改
  8. html5 3d背景墙,3D背景墙的价格怎样?3D背景墙的介绍?
  9. 【漏洞复现】shiro 反序列化 (CVE-2016-4437)
  10. 关于requests.exceptions.SSLError: HTTPSConnectionPool(host='XXX', port=443)问题