搜索
弱者
爱猫忍者
展开
-
hdu 1258 sum it up
本题由于输入的时候进行了排序,故不用排序了,且由于是从最大的数开始深度搜索,所以最后输出的必然是按照数字串中数字串的长度从小到大输出。本题关键点就在于如何使输出的不重复输出。我才用的办法是借用容器vector进行了存储,如果与前面已经存入容器的不同,则可以进入vector数组中,并经行输出操作即可。下面附上代码。注意深度搜索时要回溯一下。#include#includeusing namesp原创 2013-03-11 21:18:13 · 892 阅读 · 0 评论 -
hdu 1010 temper of the bone
挺经典的一道搜索题,从这道题里面学了挺多东西。下面附上代码和自己的解释和心得体会。#includeusing namespace std;int N,M,T,x1,g1,x2,g2,flag;char bone[8][8];int v[8][8];//进行标记的数组,刚开始除了墙之外全部赋值为0,后来的门,点和door为1int main(){ int i,j原创 2013-03-18 22:53:52 · 857 阅读 · 0 评论 -
hdu 1518 square
题目的意思是比较明显的,就是现在给你m根木棒,现在让你判断利用这些木棒能不能组成一个正方形。其实也就是看是不是用一些木棒能凑成4条相等的边。of course深搜。自己做的时候各种超时,各种不解关键在于排好序的时候,在组成一条边的时候要么选要么就直接不选了,这一点很重要。具体的分析看下面的程序。#include#includeusing namespace std;int stick[2原创 2013-05-26 21:27:59 · 764 阅读 · 0 评论 -
zoj 1003 Crashing Balloon
这个题目的意思就是说,两个人踩气球,气球上有编码每次踩到就乘上这个气球的编码(1-100没有重复)。但是最后结果是自己上报的,当然会有异议,题目假定每次那个报分少的人都会提出上诉。现在然你输出赢家的分数,这个问题实际上,就是让你分解,如果存在一组使得大数的分解出来的因子没有小数的因子,那么这个大数是正确的直接输出大数,如果大数分解的结果不管怎么分解都是含有小数的那个结果那么就假定小数的是赢家,如果原创 2013-07-03 10:41:18 · 847 阅读 · 0 评论 -
poj 1753 flip game
水题。不解释代码很长比较麻烦,我只会深搜,假期才看广搜。#includeusing namespace std;char map[5][5];int mini,flag;void dfs(int x,int count){ if(x==16) { int black,white; black=0; white=0; for(int i=0;i<4;i++)原创 2013-07-24 23:21:26 · 612 阅读 · 0 评论 -
zoj 1008
水题。不解释。#include#includeusing namespace std;struct node{ int top; int right; int bottom; int left; int sum;};node ko[26];int cun[26];int n,count,isok;void dfs(int k){ if(isok==1) ret原创 2013-07-24 23:15:28 · 719 阅读 · 0 评论 -
使用递归的方法生成一个序列的所有排列
#includeusing namespace std;int a[100];int count;void swap(int A[],int i,int j){int temp=A[i];A[i]=A[j];A[j]=temp;}void arrange(int A[],int i,int n){if(i>n){count=count+1;原创 2015-03-01 11:13:50 · 1403 阅读 · 0 评论 -
棋盘覆盖问题
在一个2^k×2^k (k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4^k种,因而有4^k种不同的棋盘,图4.10(a)所示是k=2时16种棋盘中的一个。棋盘覆盖问题(chess cover problem)要求用图4.10(b)所示的4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。原创 2015-03-02 18:21:37 · 1172 阅读 · 0 评论