摘要:#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<<
阅读全文
摘要:#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
阅读全文
摘要:#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;
阅读全文
摘要:#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
阅读全文
摘要:#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&
阅读全文
摘要:#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
阅读全文
摘要: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<
阅读全文
摘要:有意思的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++
阅读全文
摘要:题意:一棵树,定义每个节点的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
阅读全文