随笔分类 -  搜索

poj 1606
摘要:#include<iostream>#include<fstream>#include<queue>using namespace std;int n,m,p;struct node{ int s,t;};int pre[1001][1001];node pre1[1001][1001];int v[1001][1001];void print(int s,int t){ int i,j,k; if(pre[s][t]!=-1) { print(pre1[s][t].s,pre1[s][t].t); if(pre[s][t]==1) cout<< 阅读全文

posted @ 2011-07-07 19:12 宇宙吾心 阅读(249) 评论(0) 推荐(0)

poj 2386
摘要:#include<iostream>#include<fstream>#include<queue>using namespace std;int n,m;struct node{ int s,t;};int v[101][101];int move[8][2]={0,1,0,-1,1,0,-1,0,1,-1,1,1,-1,1,-1,-1};int map[101][101];void bfs(int s,int t){ int i,j,k; v[s][t]=1; queue<node> q; node a; a.s=s; a.t=t; q.pu 阅读全文

posted @ 2011-07-07 14:37 宇宙吾心 阅读(217) 评论(0) 推荐(0)

poj 2918
摘要:#include<iostream>#include<fstream>using namespace std;char map[10][10];int empty[82][2];int a[10][10];int b[10][10];int c[10][10];int ok(int s,int t){ return (s-1)/3*3+(t-1)/3+1;}int len;int dfs(int s){ int x,y,i; x=empty[s][0]; y=empty[s][1]; if(s==len+1) { return 1; } for(i=1;i<=9; 阅读全文

posted @ 2011-07-07 11:42 宇宙吾心 阅读(186) 评论(0) 推荐(0)

poj 2248
摘要:#include<iostream>#include<fstream>using namespace std;int n;int ans;int num[20];int a[20];void dfs(int s){ int i,j,k; if(s>11||s>ans) return; if(num[s]==n){ ans=s; for(i=0;i<=ans;i++) a[i]=num[i]; return; } for(i=s;i>=0;i--) { num[s+1]=num[s]+num[i]; if(num[s+1]>n) contin 阅读全文

posted @ 2011-07-07 11:42 宇宙吾心 阅读(225) 评论(0) 推荐(0)

poj 2935
摘要:#include<iostream>#include<fstream>#include<queue>using namespace std;int map[40][40];int ok(int s,int t){ return (s-1)*6+t;}struct e{ int s,t;};int pre[7][7];int pre1[7][7];int pre2[7][7];int sx,sy,ex,ey;int move[4][2]={0,1,0,-1,1,0,-1,0};int v[7][7];void pr(int s){ if(s==0) cout& 阅读全文

posted @ 2011-07-07 11:41 宇宙吾心 阅读(274) 评论(0) 推荐(0)

poj 2245
摘要:#include<iostream>#include<fstream>using namespace std;int n;int a[14];int v[14];void dfs(int s,int t){ int i; if(n-s+t+1<6) return; if(t==6) { for(i=1;i<=n;i++) if(v[i]) cout<<a[i]<<' '; cout<<endl; return; } v[s]=1; dfs(s+1,t+1); v[s]=0; dfs(s+1,t);}void 阅读全文

posted @ 2011-07-07 11:40 宇宙吾心 阅读(157) 评论(0) 推荐(0)

poj 2436
摘要:dfs代码:#include<iostream>#include<fstream>using namespace std;int cow[1001];int n,d,k;int ans;int b[16];void solve(int s,int t,int p){ int i,j; if(d-s+1<k-t) return; if(t==k) { j=0; for(i=1;i<=n;i++) if(cow[i]==(cow[i]&p)) j++; if(j>ans) ans=j; return; } solve(s+1,t+1,p|(1< 阅读全文

posted @ 2011-06-26 21:53 宇宙吾心 阅读(170) 评论(0) 推荐(0)

poj 3411
摘要:有意思的dfs代码:#include<iostream>#include<fstream>#include<vector>using namespace std;struct node{ int c,p,r,data;};vector<node> edge[11];int n,m;int v[11];int ans;void solve(int s,int w){ int i,j,k; if(w>ans) return; if(s==n) { ans=w; return ; } for(i=0;i<edge[s].size();i++ 阅读全文

posted @ 2011-06-26 21:18 宇宙吾心 阅读(322) 评论(0) 推荐(0)

poj 1655
摘要:题意:一棵树,定义每个节点的balance值:去掉这点节点后的森林里所有树的最大节点数。求出最小的balance值和其所对应的节点编号。代码:#include<iostream>#include<fstream>using namespace std;struct e{ int data; e *next;};e edge[20001];int v[20001];int a[20001];int b[20001];int n;void solve(int s){ int i,j=0,k=0; e *p=edge[s].next; v[s]=1; while(p){ if 阅读全文

posted @ 2011-05-18 21:20 宇宙吾心 阅读(399) 评论(0) 推荐(0)

导航