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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。