摘要:
对每个矩形都存一个优先值,如果一个矩形被放到上面,则它的优先级变为当前的最大+1,放到下面就是当前最小-1,被删除则是-maxlongint。接着我们只要考虑所有优先级比它大的矩形就行了。这道题的难点就是如何得到一块矩形在被优先值比它大的矩形覆盖之后的矩形。使用DFS实现分治。如果矩形i被矩形j切割,则我们把切割留下来的部分以几个小矩形的形式存下来,分别给别的矩形切割,切割的时候分上下左右四个方向判断即可。具体请看程序。{ID:htx_2006PROB:windowLANG:PASCAL}const mm=10+26+26;type ltype=record num,x1,y1,x2,y... 阅读全文
摘要:
[USACO2.3.3][zerosum零的算式和][dfs]代码:#include#include#includeint n;voiddfs(int a,int b,int ans[10]){ int i; if(b==n-1){ ans[b]=a; int sum=1,last=1; for(i=1;i<=n-1;i++){ if(ans[i]==1){ if(last<0){ sum=sum-last+last*10-(i+1); last=last*10-(i+1); } if(las... 阅读全文
摘要:
最后的总结,最终没有看题解,自己想出来四个剪枝,刚开始四个剪枝加上一直无法ac,正在抓狂的时候发现有个地方写错了,导致许多新的枝条,改一下,ac了,这一题也没想象中的那么难,加油。后记:看了题解后搜索顺序改了一下,直接导致剪枝四没有用上,发现慢的出奇,15s左右才能出解,看来剪枝四效率很高呢。一看就是搜索,写一下裸的过了5个点{ID:zhengha3 PROG:cryptcow LANG:PASCAL}program aa;const z='Begin the Escape execution at the Break of Dawn';var s:string; i,j:lo 阅读全文
摘要:
Kitty猫基因编码【题目描述】小可可选修了基础生物基因学。教授告诉大家SuperSamuel星球上Kitty猫的基因的长度都是2的正整数次幂2k(k≤8),全是由两种不同的基因单元组成的。这两种不同的基因单元分别记成0和1,于是Kitty猫基因可以写成一个01串表达式s。为了便于分析和降低数据存储量,教授发明了ABC编码规则。该编码规则是不断地按照对 Kitty 猫基因 01 串表达式s进行改写,直至最终被改写成只含有字符“A”、“B”、“C”的符号串。例如:T(01001011)=CT(0100)T(1011)=CCT(01)T(00)CT(10)T(11)=CCCT(0)T(1)ACCT 阅读全文
摘要:
例题1:一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种?请用递归算法编程实现。[中国某著名通信企业H面试题]解析:靶上一共有10种可能——1环到10环,还有可能脱靶,那就是0环,加在一起共11种可能。这是一道考循环和递归的面试题。我们在这个程序中将利用递归的办法实现打靶所有可能的演示,并计算出结果。(可以连续用10个循环语句来表示程序)for (i1=0;i1<=10;i1++){ for (i2=0;i2<=10;i2++) { for (i3=0;i3<=10;i3++) { ...... for (i10=0;i10<=10;i10++) 阅读全文
摘要:
今天写了10个数字排列成环,相邻数字之和为素数的搜索题目,并由此总结递归改写非递归的模式经过两个题目的比较后发现,不应该提出过于细节的模型,模式化到吧递归的搜索树的形式掌握,记住模拟堆栈中记录的是搜索进行状态,终止深度是搜索树的深度,以此两点,结合题目具体条件节能完成要求带有回溯部分的题目,回溯是在循环开始时先判断搜索横向状态是否还有未进行的,如果没有的话就倒退一步,切记把数据所有标记还原初始状态,有事不止一个数据递归代码:#include<cstdio>#include<cstring>using namespace std;const bool simp[]= {0 阅读全文