poj 1178 求所有棋子移动到相同位置的最小步数,
来源:互联网 发布:php工程师需要具备 编辑:程序博客网 时间:2024/05/20 07:50
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define MIN(x,y) ((x)>(y)?(y):(x))#define MAX(x,y) ((x)>(y)?(x):(y))using namespace std;int d2[65][65],d1[65][65];int kight[64]; int mov1[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};int mov2[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};void init(){memset(d1,0x3f,sizeof(d1));memset(d2,0x3f,sizeof(d2));for(int i=0;i<64;i++)d1[i][i]=d2[i][i]=0;for(int i=0;i<8;i++)for(int j=0;j<8;j++)for(int k=0;k<8;k++){int x1,x2,y1,y2;x1=i+mov1[k][0];y1=j+mov1[k][1];if(x1>=0&&x1<8&&y1>=0&&y1<8){ d1[x1*8+y1][i*8+j]=1; d1[i*8+j][x1*8+y1]=1;}x2=i+mov2[k][0];y2=j+mov2[k][1];if(x2>=0&&x2<8&&y2>=0&&y2<8){d2[x2*8+y2][i*8+j]=1;d2[i*8+j][x2*8+y2]=1;}} for(int k=0;k<64;k++)for(int i=0;i<64;i++)for(int j=0;j<64;j++){d1[i][j]=MIN(d1[i][j],d1[i][k]+d1[k][j]);d2[i][j]=MIN(d2[i][j],d2[i][k]+d2[k][j]);} }int main(){char str[200];int king,tot,x,y;init();scanf("%s",str); king=(str[0]-'A')*8+str[1]-'0'-1;tot=0;for(int i=2;i<strlen(str);i+=2)kight[tot++]=(str[i]-'A')*8+(str[i+1]-'0'-1);int res=0x3f3f3f3f;for(int i=0;i<64;i++)for(int j=0;j<64;j++)for(int k=0;k<tot;k++){ intsum=d1[king][j]; sum+=d2[kight[k]][j];sum+=d2[j][i];for(int m=0;m<tot;m++)sum+=d2[kight[m]][i];sum-=d2[kight[k]][i];if(sum<res)res=sum;}printf("%d\n",res);}
0 0
- poj 1178 求所有棋子移动到相同位置的最小步数,
- poj 1920 汉诺塔移动到某一种指定位置的最小步数
- uvalive 3276 The Great Wall Game 把一个图中的棋子 移动到同一直线 或者斜线上的最小步数
- POJ-3126 Prime Path(BFS 求最小步数)
- 国际象棋的棋子步数问题
- 判断某个棋子能否移动到位置(x,y)的测试方法
- 期盼中求出起点到终点的最小步数
- 只可以把数组的最后一位数插入任意位置,求最小步数使两组数组相同
- (hdu step 4.2.4)A strange lift(求从起点到终点的最小步数,限制条件是:在一维的情况下)
- hdu 1372 bfs最少棋子步数
- HOJ 1440 Knight Moves -------简单搜索 BFS 求l两点之间最小的到达步数
- HOJ 2979 Escape from Pyramids --------BFS求最小的步数
- uva 11151 增减改求变成回文的最小步数
- 保持二进制中1的个数相同,求大于输入自然数的最小数
- 求一个最小的一个大于N并且二进制权重与N相同的数
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动
- NYOJ独木舟上的旅行
- 插入排序
- RandomForest中set.seed的作用
- [leetcode]: 520. Detect Capital
- 基于 libcurl 的通用网络传输库的实现
- poj 1178 求所有棋子移动到相同位置的最小步数,
- 逻辑运算
- Hbase中java中增删改查
- HDU5971 Wrestling Match(二分图的判断)
- 关于静态库
- Struts2核心技术 (一)
- mui-OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源。
- 学习淘淘商城第四十八课(商品搜索功能Controller实现)
- 计算机图形学画图代码总结