摘要: 蛋疼,犯了2个错误1.不能每遇到个点都把它四个方向的每个点都走一个(每个点入一次队列),这样要mle2.不能把已经走过的点标记成‘*’,这样要waView Code #include <stdio.h>#include <queue>using namespace std;struct node{ int x,y,cnt;}a;int n,m,ex,ey,k;char map[105][105];int bfs(){ int i,row,col,dir[4][2]={0,1,1,0,-1,0,0,-1}; queue<node> q; q.push(a); 阅读全文
posted @ 2011-12-22 17:59 104_gogo 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 自己改了很久,老是出错,最后发现在把一张牌 i 选出来放在另一张牌 j 上出了问题,但如果要改的话,就要去找牌 i 能放的唯一一张牌 j 又不方便最后不得不佩服那些把输入处理成id[x]=i;这样的人,写的很精彩。View Code #include<stdio.h>#include<math.h>int mark[11],id[11],ans;void dfs(int num,int sum){ int i,j; if(sum>=ans)return; if(num==9) { ans=sum; return; } for(i=... 阅读全文
posted @ 2011-12-22 14:48 104_gogo 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 用到了图论最短路更新的思想,当走到走过的地方时要更新数据:5 6.XX.1...X.6.2...X....XX.XXXXX.View Code #include <stdio.h>#include <string.h>#include <queue>using namespace std;struct node{ int x,y,num,t;}a;struct Path{ int x,y,pre,fight;}p[500000];int n,m,k,l,key,dp[105][105];char map[105][105];void f(int z){ in 阅读全文
posted @ 2011-12-22 14:34 104_gogo 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 类似于最大子段和的做法View Code #include <stdio.h>int main(){ int i,n,a,b,sum,cnt,max,ar[100005]; while (scanf("%d",&n)!=EOF) { for (i=0;i<n;i++) { scanf("%d%d",&a,&b); ar[i]=a-b; } sum=cnt=0; max=-1; for (i=0;i<2*n-1;i++) { ... 阅读全文
posted @ 2011-12-22 14:27 104_gogo 阅读(155) 评论(0) 推荐(0) 编辑