| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 316 人关注过本帖
标题:搜索题,找了好久没找到错误,请指教
只看楼主 加入收藏
whibla
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-8-1
结帖率:66.67%
收藏
已结贴  问题点数:14 回复次数:2 
搜索题,找了好久没找到错误,请指教
杭电 1728


#include"stdio.h"
#include"iostream"
#include"string.h"
#include"queue"
using namespace std;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,-1,1};
char ch[120][120];
int g[120][120];
int m,n,x2,y2,x1,y1,k;
struct point
{
    int x,y,time,s;
};
queue<point> Q;
int bfs(point z)
{

    int a,b,i,j,t;
    while(!Q.empty())
        Q.pop();
    Q.push(z);
    for(i=0;i<110;i++)
    for(j=0;j<110;j++)
    g[i][j]=100000000;
    g[y1][x1]=0;
    point hd;
    while(!Q.empty())
    {
        hd=Q.front();
        Q.pop();
         for(i=0;i<4;i++)
        {
            int a=hd.x+dx[i],b=hd.y+dy[i];
            if(a<0||a>=n||b<0||b>=m||ch[b][a]=='*')
            continue ;
            else
            {
                point t1;
                t1.x=a;
                t1.y=b;
                if(dx[i]==0) t1.s=1;
                else t1.s=2;
                if(hd.s == -1) t1.time = 0;
                else if(hd.s==t1.s)t1.time=hd.time;
                else t1.time=hd.time+1;
                if(t1.time<g[b][a]&&t1.time <= k)
                {
                    g[b][a]=t1.time;
                    Q.push(t1);
                }
            }
        }
    }
    return g[y2][x2];
}
int main()
{
    int t,i,p;
    while(cin>>t)
    {
        while(t--)
        {
            memset(ch,0,sizeof(ch));
            cin>>m>>n;
            for(i=0;i<m;i++)
            {
                cin>>ch[i];
            }
         //   for(i = 0;i < m;i++)
         //   printf("%s\n",ch[i]);
            cin>>k>>x1>>y1>>x2>>y2;
            x1--;
            x2--;
            y1--;
            y2--;
            point start;
            start.x=x1;
            start.y=y1;
            start.time=0;
            start.s=-1;
            p=bfs(start);
            if(p<=k)
            cout<<"yes"<<endl;
            else cout<<"no"<<endl;
          //  cout<<p<<endl;
        }
    }
    return 0;
}

搜索更多相关主题的帖子: 搜索 include 
2012-11-20 11:12
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:10 
#include"queue"
????笔误??

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-20 12:53
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
头文件要加.h吧

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-20 12:54
快速回复:搜索题,找了好久没找到错误,请指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033958 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved