hdu 2531

news/2024/11/8 9:15:58/

起初没有看懂题目,无处下手,就去翻翻别人的代码,才知道题目的意思,汗……

简单的一般的广搜的变形,这个解释的比较详细http://blog.csdn.net/swm8023/article/details/6765219

虽然知道怎么做了,但是还是犯错误,最后与上面这份代码比较之后才找出错误

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;

char map[102][102];
int vis[102][102];
int n,m,time,ans;
int fx[21],fy[21],lx,ly;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};

struct node
{
 int x,y;
 node(int a,int b)//这样用比较方便,但是注意声明node结构体的时候要注意,因为这个是构造函数,所以声明的时候要按构造函数的模式声明。
 {
  x=a;
  y=b;
 }
};

queue<node> q;

void bfs()
{
 int i,j;
 int nnx,nny;
 int nx,ny;
 
 while(!q.empty())
 {
  node add=q.front();
  q.pop();
  
  int k;
  //cout<<add.x<<" "<<add.y<<endl;
  for(i=0;i<4;i++)
  {
   k=0;
   nnx=add.x+dx[i];
   nny=add.y+dy[i];
   if(vis[nnx][nny]==0)//先判断是否可行
   {
    for(j=0;j<ans;j++)
    {
     //cout<<"*"<<fx[j]<<" "<<fy[j]<<endl;
     nx=fx[j]-lx+nnx;
     ny=fy[j]-ly+nny;//郁闷,今天竟然两次犯这种错误:把y写成了x,经过认认真真的检查才查出来……坑爹的说,是自己敲代码的时候太不用心了……
     //cout<<"**"<<nx<<" "<<ny<<endl;
     if(nx<1||nx>n||ny<1||ny>m)//还有这里:黄色部分必须在前面,而不应该在这里加vis[nx][ny]!=0,因为有可能这一步是前面的身体部分走过的,会出现误判……
     {
      k=1;
      break;
     }
     if(map[nx][ny]=='O')
     {
      k=1;
      break;
     }

if(map[nx][ny]=='Q')
      {
       k=2;
          }

    }

   }
   else
    k=1;
   if(k==2)
   {
    time=vis[add.x][add.y];
    return;
   }
   else if(k==1)
   {
    continue;
   }
   else
   {
    vis[nnx][nny]=vis[add.x][add.y]+1;
    q.push(node(nnx,nny));
   }
  }
 }
}

int main()
{
 while(cin>>n>>m)
 {
  if(!n&&!m)
   break;
  int i,j;
  lx=0,ly=0;
  ans=0;
  
  for(i=1;i<=n;i++)
  {
   for(j=1;j<=m;j++)
   {
    cin>>map[i][j];
    if(map[i][j]=='D')
    {
     fx[ans]=i;
     fy[ans++]=j;
     if(!lx&&!ly)
     {
      lx=i;
      ly=j;
     }
    }
   }
  }
  if(!lx||!ly)
  {
   cout<<"Impossible"<<endl;
   continue;
  }
  
  //cout<<ans<<endl;
  memset(vis,0,sizeof(vis));
  
  while(!q.empty())
   q.pop();
  
  time=1000000;
  vis[lx][ly]=1;
  
  q.push(node(lx,ly));
  bfs();
  
  if(time<1000000)
   cout<<time<<endl;
  else
   cout<<"Impossible"<<endl;
  
 }
 
 return 0;
}

 

 


 

转载于:https://www.cnblogs.com/Shirlies/archive/2012/02/22/2363961.html


http://www.ppmy.cn/news/543726.html

相关文章

MSB2531产品简介

MSB2531主要用来做PND/车载导航板/车载核心板方案&#xff0c;主芯片规格为ARM Cortex-A7 32-bit RISC CPU,800MHz,内置三路LDO, 两路DC/DC,充电管理. GPS BaseBand, FM Transmitter, Class-D Amplifier, 立体声耳机驱动;DRAM memory支持16-bit LPDDR和8-bit DDR3, NAND interf…

cc2531USB dongle 实现MT模式 数据转发 串口

由于项目需求要实现CC2531USB dongle的MT模式来实现dongle的数据转发功能&#xff0c;框架简图1所示。PC端实现了MT模式&#xff0c;也可以用Ztool。总结起来就是dongle在MT模式下接收串口数据&#xff08;数据满足MT格式&#xff09;&#xff0c;然后将数据解析为具体方法&…

POJ 2531 (简单dfs)

dfs一直不知道怎么写&#xff0c;可还是要练习。 这道题题意&#xff1a;n台电脑&#xff0c;分成两个集合&#xff0c;不同的集合交流需要时间&#xff0c;求最大的时间。 思想&#xff1a;遍历全部可能&#xff0c;最开始可以把所有电脑看作一个集合&#xff0c;然后一个一…

丹麦网站推出提供俊男靓女精子或卵子服务

丹麦约会网站“美丽人群”(BeautifulPeople.com)自2002年成立开始&#xff0c;已在全球190多个国家和地区拥有超过60万名注册会员&#xff0c;日点击量逾400万&#xff0c;促成会员间1000多对成婚&#xff0c;造就约600名漂亮宝宝。 最近&#xff0c;“美丽人群”网站在搭建约会…

2022年全球与中国油性凝胶面膜市场现状研究

2021年全球油性凝胶面膜市场销售额达到了 亿美元&#xff0c;预计2028年将达到 亿美元&#xff0c;年复合增长率&#xff08;CAGR&#xff09;为 %&#xff08;2022-2028&#xff09;。地区层面来看&#xff0c;中国市场在过去几年变化较快&#xff0c;2021年市场规模为 百万美…

欧洲游记之——在丹麦上班的日子(一)

去丹麦&#xff0c;已经不是第一次了&#xff0c;这次老板放出话来&#xff0c;不能只闲呆瞎逛瞧新鲜&#xff0c;得帮公司干点活啦。 一下飞机&#xff0c;就被告知&#xff0c;明天得去Herning参展。旅途累不累啊&#xff1f;习惯性地客气一句&#xff0c;不累。不累就去仓库…

差点被劫色 Facebook白天炫富晚上来狼

就算是大名鼎鼎的Facebook也不能保证每个用户的私隐信息不被泄漏。这个号称世界第一的社交网络公司因此也常因为这个问题“荣登”新闻头条&#xff0c;今天也不例外。 本月的24号四点&#xff0c;一个17岁的无知少女帮祖母数积蓄的时候&#xff0c;由于兴奋过度&#xff0c;把一…

瞬渺光电代理THZ光谱仪成功客户

空间研究&#xff1a; 欧洲太空总署&#xff08;ESA&#xff09;荷兰 美国国家航空航天局&#xff08;戈达德太空飞行中心&#xff09; 排放与吸收分子光谱学&#xff1a; 斯托尼布箅鲁克大学&#xff08;美国纽约&#xff09; 超导性&#xff1a; 麦克马斯特大学&#xff08;…