摘要: http://poj.org/problem?id=1321 dfsView Code 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 char mat[10][10]; 5 bool col[10];//col[i]=true表示第 i列有放 6 int n,k,solution=0; 7 int num;//当前放了几个 8 void initMat() 9 {10 memset(col,false,sizeof(col));11 solution=0;12 num=0;13 }14 阅读全文
posted @ 2012-04-05 22:09 keepmoving89 阅读(112) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2488 【DFS 】 一个p*q的棋盘,从一个点开始,骑士每次漫游都会在一个方向移动两个格子,并在垂直的方向移动一个格子。问题是,有没有这样一种漫游方法,每次骑士经过的地方都不同并且能够遍历整个棋盘?.要求 lexicographically first path,就是字典需最靠前的路径,这个就需要选择两个探测增量的时候考虑一下。先优先x后优先y,所以 int dx[]={-2,-2,-1,-1,1,1,2,2}; int dy[]={-1,1,-2,2,-2,2,-1,1};//保证路径按字典序,搜索时应自左向右,自上而下View Cod 阅读全文
posted @ 2012-04-05 18:08 keepmoving89 阅读(166) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2186 n头奶牛,给出若干个欢迎关系a b,表示a欢迎b,欢迎关系是单向的,但是是可以传递的。另外每个奶牛都是欢迎他自己的。 求出被所有的奶牛欢迎的奶牛的数目tarjan处理连通分量,每个连通分量缩点得到一个有向无环图DAG,若这个DAG只有一个点的出度为0,则该点代表的连通分量所含有的节点数,就是所求。View Code 1 #include<iostream> 2 #include<vector> 3 #include<cstring> 4 #include<cmath> 5 #inclu 阅读全文
posted @ 2012-04-04 16:41 keepmoving89 阅读(143) 评论(0) 推荐(0) 编辑
摘要: http://ac.jobdu.com/problem.php?id=1418 强连通分量tarjan+dfsView Code 1 #include<iostream> 2 #include<vector> 3 #include<cstdio> 4 #include<cmath> 5 #include<stack> 6 #include<cstring> 7 using namespace std; 8 const int N=100008; 9 vector<int>mat[N];//原图 10 vecto 阅读全文
posted @ 2012-04-04 15:14 keepmoving89 阅读(224) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1116 将每一个单词的首尾字母当做结点,首尾字母间连线,判断最后形成的有向图能否形成欧拉通路。欧拉通路:除首尾结点外,其余结点入度等于出度,起点出度减入度等于1,终点入度减出度等于1。欧拉回路:所有结点的入度都等于出度。View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdlib> 4 using namespace std; 5 const int N=30; 6 int father[N],i 阅读全文
posted @ 2012-04-03 23:14 keepmoving89 阅读(211) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1108View Code 1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 int gcd(int a1,int b1)// 5 { 6 int a=max(a1,b1); 7 int b=min(a1,b1); 8 int temp=a%b; 9 while(temp!=0)10 {11 a=b;12 b=temp;13 temp=a%b;14 ... 阅读全文
posted @ 2012-04-03 17:01 keepmoving89 阅读(123) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1106 简单View Code 1 #include<iostream> 2 #include<cstring> 3 #include<vector> 4 #include<cstdlib> 5 #include<algorithm> 6 using namespace std; 7 vector<int>v; 8 void fun(string s)//分离数值到向量 9 {10 v.clear();11 int i,len=s.len 阅读全文
posted @ 2012-04-03 16:52 keepmoving89 阅读(99) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1102 如果两个城市之间有边,则把其置为0,然后直接最小生成树,记录总距离。View Code 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 const int N=108; 5 int mat[N][N]; 6 int dis[N]; 7 bool visited[N]; 8 int n; 9 int find()//在dis中找没访问的值最小的 10 {11 int pos=-1,minx=999 阅读全文
posted @ 2012-04-03 16:18 keepmoving89 阅读(118) 评论(0) 推荐(0) 编辑
摘要: View Code 1 OJ上的一些水题(可用来练手和增加自信) 2 (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 3 初期: 4 一.基本算法: 5 (1)枚举. (poj1753,poj2965) 6 (2)贪心(poj1328,poj2109,poj2586) 7 (3)递归和分治法. 8 (4)递推. 9 (5)构造法.(poj3295) 10 (6)模拟法.(poj1068,... 阅读全文
posted @ 2012-04-03 00:03 keepmoving89 阅读(213) 评论(0) 推荐(0) 编辑
摘要: http://ac.jobdu.com/problem.php?id=1036 暴力View Code 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n,x,y,z; 6 while(cin>>n) 7 { 8 cin>>x>>y>>z; 9 int i,j,temp,val,a,b;10 temp=x*1000+y*100+z*10;11 bool flag=false;12 for(i=9;i>0 && !f... 阅读全文
posted @ 2012-04-02 23:44 keepmoving89 阅读(365) 评论(0) 推荐(0) 编辑