| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:STL求解In Reply To:STL求解 Posted by:zhengmoa at 2011-12-05 13:58:07 > # include <iostream>
> # include <string.h>
> # include <queue>
> # define maxn 305
> using namespace std;
>
> typedef struct node
> {
> int x,y,step;
> };
>
> int mark[maxn][maxn];
> int n;
> node s,e;
> int dr[][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,2},{-2,1},{-2,-1},{-1,-2}};
> int bfs()
> {
> queue<node>q;
> node t;
> int i;
> if (s.x==e.x &&s.y==e.y)return 0;
> q.push(s);
> memset(mark,0,sizeof(mark));
> mark[s.x][s.y]=1;
> while (!q.empty())
> {
> s=q.front();
> q.pop();
> for (i=0;i<=7;i++)
> {
> t.x=s.x+dr[i][0];
> t.y=s.y+dr[i][1];
> if (t.x<0 ||t.x>=n ||t.y<0 ||t.y>=n)continue;
> if (mark[t.x][t.y]==1)continue;
> if (t.x==e.x && t.y==e.y)return t.step+1;
> t.step=s.step+1;
> q.push(t);
> mark[t.x][t.y]=1;
> }
>
> }
> return -1;
> }
>
> int main()
> {
> int cas,dis;
> cin>>cas;
> while (cas--)
> {
> cin>>s.x>>s.y;
> cin>>e.x>>e.y;
> s.step=0;
> dis=bfs();
> cout<<dis<<endl;
> }
> return 0;
> }
> STL 的哪里有问题啊,感觉和下面的一模一样啊
>
> # include <iostream>
> # include <string.h>
> # define maxn 305
> using namespace std;
>
> typedef struct node
> {
> int x,y,step;
> };
>
> int dr[][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,2},{-2,1},{-2,-1},{-1,-2}};
> node s,e;
> int mark[maxn][maxn],n;
> node queue[maxn*maxn];
> int bfs()
> {
> int front,rear,i;
> node t;
> front=rear=0;
> queue[rear++]=s;
> memset(mark,0,sizeof(mark));
> while (front<rear)
> {
> s=queue[front++];
> if (s.x==e.x && s.y==e.y)return s.step;
> for (i=0;i<=7;i++)
> {
> t.x=s.x+dr[i][0];
> t.y=s.y+dr[i][1];
> if (t.x<0 || t.x>=n || t.y<0 || t.y>=n )continue;
> if (mark[t.x][t.y]==1)continue;
> t.step=s.step+1;
> queue[rear++]=t;
> mark[t.x][t.y]=1;
> }
> }
> return -1;
> }
> int main()
> {
> int cas,dis;
> cin>>cas;
> while (cas--)
> {
> cin>>n;
> cin>>s.x>>s.y;
> cin>>e.x>>e.y;
> s.step=0;
> dis=bfs();
> cout<<dis<<endl;
> }
> return 0;
> }
>
>
你看好你return的是什么。。
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator