poj1797,poj2778

  poj1797,poj2778

  和HDU1043一样的题目,这次用数据库文件系统实现。

  感觉写的还是不错的,中间一些细节错误了很多次。

  具体见代码。

  #包括输入输出流

  #包括cstdio

  #包含算法

  #包含字符串

  #包含数学函数

  #包括字符串

  #包括队列

  #包含集

  #包含矢量

  #包括堆栈

  #包含地图

  #包括非全部

  #定义PI acos(-1.0)

  #定义最大值500005

  #定义inf 1 28

  #定义法学学士(x)(x ^ 1)

  #定义RR(x)x ^ 1 1

  #为(int i=(s)定义Rep(i,s,t);I=(t);我)

  #定义ll龙龙

  #定义mem(a,b) memset(a,b,sizeof(a))

  #定义mp(a,b)生成_对(a,b)

  使用命名空间标准

  结构肾脏疾病特异性调查表

  字符串op;

  char Map[4][4];

  int x,y;

  无效显示()

  Rep(i,0,2)

  Rep(j,0,2)

  cout char(Map[I][j] 0 );

  cout结束

  cout结束

  字符串状态[Max];

  int fac[12]={ 0,1,2,6,24,120,720,5040,40320,362880,3628800 };

  (同Internationalorganizations)国际组织康拓(kdq答)

  int ans=0;

  Rep(i,0,8)

  int num=0;

  Rep(j,i 1,8)

  if(a . Map[I/3][I % 3]a . Map[j/3][j % 3])

  数字

  ans=num *(fac[8-I]);

  返回美国国家标准(American National Standards的缩写)

  int vis[Max];

  int mx[4]={0,0,1,-1 };

  int my[4]={1,-1,0,0 };

  char opp[4]={r , l , d , u };//从起点开始搜索时的交换顺序

  char dopp[4]={l , r , u , d };//从终点开始搜索时的交换顺序

  int inmap

  如果(a.x=0 a.y 3 a.x 3 a.y=0)返回1;

  返回0;

  字符串bfs(kdq s)

  队列肾脏疾病特异性调查表

  肾脏疾病特异性调查表初始化;

  初始化. map[0][0]=1;

  初始化. map[0][1]=2;

  初始化. map[0][2]=3;

  初始化. map[1][0]=4;

  初始化. map[1][1]=5;

  初始化. map[1][2]=6;

  初始化. map[2][0]=7;

  初始化. map[2][1]=8;

  初始化. map[2][2]=9;

  初始化。x=2;

  初始化。y=2;

  初始化。op . clear();

  q .推;//起点

  q . push(init);//终点

  int ss=康拓(s);

  vis[ss]=2;//将从起点开始遍历到的点置为2

  ss=康拓(init);

  vis[ss]=1;//将从终点开始遍历到的点置为一

  而(!q.empty())

  kdq temp=q . front();

  q . pop();

  int cc=康拓(temp);

  Rep(i,0,3)

  kdq next=temp

  下一个。x=温度。x MX[I];

  下一个。y=温度。y my[I];

  if(inmap(next))

  交换(下一个。映射[next.x][next.y],下一个map[temp。x][温度。y]);

  整数=康拓(下一个);

  如果(!vis[num]//如果未遍历过该点

  vis[num]=vis[cc];

  if(vis[num]==1)//如果是终点遍历出来的点

  下一个。op=dopp[I];

  else//同理

  下一个。op=opp[I];

  state[num]=next。op;//记录当前的路径

  问推(下一个);

  else if(vis[num]!=vis[cc])//如果该点被起点和终点都遍历到

  字符串c1、C2;

  if(vis[num]==1)

  c1=状态[数字],c2=状态[cc]opp[I];

  else c1=州[cc] dopp[i],C2=州[num];

  反向(c1.begin()、c1。end());//注意从终点开始遍历的顺序得取反

  返回c2 c1//那么返回该点的顺序,即为起点到终点的顺序

  返回不可解;

  char a[10000];

  int main()

  而(获取(一))

  int l=strlen(a);

  肾脏疾病特异性调查表现在;

  int tx=0;

  int numx,numy

  Rep(i,0,l - 1)

  if(a[i]=0 a[i]=8 )

  现在. map[tx/3][tx % 3]=a[I]-0;

  tx;

  else if(a[i]==x )

  现在. map[tx/3][tx % 3]=9;

  numx=tx/3;

  numy=tx % 3;

  tx;

  if(tx=9)断开;

  mem(vis,0);

  now.x=numx

  now.y=numy

  现在。op . clear();

  printf(%s\n ,bfs(现在)。c _ str());

  返回0;

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: