最后一题

原创 2015年07月10日 09:46:54

program problem_f;
type
 int=longint;
const
 inf='f.in';
 outf='f.out';
 mapxy1=5;
 maxn=mapxy1*mapxy1;
 maxrinhp=16;
 maxt=34;
 dx:array[0..3] of int=(-1,0,1,0);
 dy:array[0..3] of int=(0,-1,0,1);
 dn:array[0..4] of int=(-1,-mapxy1,1,mapxy1,0);
var
 bh:array[0..maxt,0..maxn-1,0..maxn-1,0..maxn-1,1..maxrinhp] of int;
 g:array[0..maxn-1,0..maxn-1] of int;
 map:array[-1..mapxy1,-1..mapxy1] of boolean;
 rp,zp1,zp2,hpm,hpz:int;

function getposid(x,y:int):int;
begin
 if (x<0) or (x>=mapxy1) or (y<0) or (y>=mapxy1)
  then  getposid:=1
  else getposid:=y*mapxy1+x;
end;

procedure floyd;
var
 i,j,k:int;
begin
 fillchar(g,sizeof(g),$3f);
 for i:=0 to mapxy1-1 do
  for j:=0 to mapxy1-1 do
   if map[i,j] then
    for k:= 0 to 3 do
     if map[i+dy[k],j+dx[k]] then
      g[getposid(j,i),getposid(j,dx[k])]:=1;
 for i:= 0 to maxn-1 do
  g[i,i]:=0;
 for k:=0 to maxn-1 do
  for i:=0 to maxn-1 do
   for j:=0 to maxn-1 do
    if g[i,j]>g[i,k]+g[k,j] then
     g[i,j]:=g[i,k]+g[k,j];
end;

var i,j,k:int;
 c:char;
 ri,zi1,zi2,hpmi,t:int;
 rj,zj1,zj2,hpmj,b:int;

function lingmove(d:int):int;
var
 i,d1:int;
begin
 for i:=0 to 3 do
  begin
   d1:=d+dn[i];
    if (d1>=0) and (d1<maxn) then
     if g[d,d1]=1 then
      if g[d,d1]+g[d1,rj]=g[d,rj] then
       begin
        lingmove:=d1;
        exit;
       end;
  end;
  lingmove:=d;
end;

begin
 fillchar(map,sizeof(map),0);
 //assign(input,inf);
// reset(input);
 for i:=0 to mapxy1-1 do
  begin
 for j:=0 to mapxy1-1 do
 begin
  read(c);
  map[i,j]:=(c<>'1');
  if c='M' then rp:=getposid(j,i);
  if c='z' then zp1:=getposid(j,i);
  if c='Z' then zp2:=getposid(j,i);
 end;
 readln;
end;
readln(hpm,hpz);
//close(input);
floyd;
fillchar(bh,sizeof(bh),$3f);
bh[0,rp,zp1,zp2,hpm]:=hpz*2;
bh[0,rp,zp2,zp1,hpm]:=hpz*2;
for t:=0 to maxt do
 for ri:=0 to maxn-1 do
  for zi1:=0 to maxn-1 do
   for zi2:=0 to maxn-1 do
    for hpmi:=1 to hpm do
     if bh[t,ri,zi1,zi2,hpmi]<$3f3f3f3f then
     begin
      b:=bh[t,ri,zi1,zi2,hpmi];
      if b<=0 then
       begin
        //assign(output,outf);
        //rewrite(output);
        writeln('WIN');
        writeln(t);
        //close(output);
        halt;
       end;
if t<maxt then
for k:=0 to 4 do

begin
 rj:=ri+dn[k];
 if (rj<0) or (rj>=maxn) then continue;
 if b>hpz then
   if rj=zi1 then continue;
 if b>0 then
   if rj=zi2 then continue;
 if g[ri,rj]>1 then continue;
 hpmj:=hpmi;
 if k=4 then
  dec(b);
 if b<=hpz then zj1:=zi1 else
  begin
   zj1:=lingmove(zi1);
   if zj1=rj then begin dec(hpmj);
                        zj1:=zi1;
                  end;
  end;
  if b<=0 then zj2:=zi2 else
   begin
    zj2:=lingmove(zi2);
    if zj2=rj then begin dec(hpmj); zj2:=zi2; end;
   end;

   if hpmj=hpmj-2 then
    if zj1=zj2 then
     inc(hpmj);

   if hpmj>0 then
    if bh[t+1,rj,zj1,zj2,hpmj]>b then
     bh[t+1,rj,zj1,zj2,hpmj]:=b;
    end;
   end;
  //assign(output,outf);
  //rewrite(output);
  writeln('LOSE');
  //close(output);
end.

版权声明:本文为博主原创文章,未经博主允许不得转载。

如何解决IMEI缺少最后一位的问题

IMEI(International Mobile Equipment Identity,移动设备国际识别码,又称为国际移动设备标识)是手机的唯一识别号码。本文将解决IMEI缺少最后一位校验位的问题。...
  • hjpdyxhjd
  • hjpdyxhjd
  • 2016年07月05日 18:17
  • 2121

TextView最后一行,不完全显示。截取显示

1、效果图大致如下: 本代码存在的弊端是存放在listView中,可能出现需要滑动才可以刷新,设置文本。 import android.content.Context; import andro...
  • yersterday
  • yersterday
  • 2015年04月29日 14:04
  • 1872

【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

public class ArrayChangeApp { /** * @param args */ public static void main(String[] args) { ...
  • u014657292
  • u014657292
  • 2014年04月11日 18:28
  • 2044

网易前端实习生笔试最后一题ajax实现文件上传带进度条

来源:点击打开链接 用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,...
  • u014787301
  • u014787301
  • 2016年03月30日 20:26
  • 1527

hdu 4361 2013多校联合训练第3场最后一题

题目有n个点  初始时先加入一个点到集合中,然后依次加入点,直到集合中的点的个数为n为止,每加一个点,算一次集合内所有点之间的最短距离,输出这个距离;为了避免输出过多,把每次要输出的结果相加后,每组只...
  • u011401504
  • u011401504
  • 2013年07月31日 15:02
  • 708

波兰式转为逆波兰式——2016年华为笔试最后一题

题目 2016年9月6日华为笔试最后一道题(300分)为波兰式转化为逆波兰式的问题,具体题目为: 描述:   波兰表示法,是一种逻辑、算术和代数表示方法,其特点是操作符置于操作数的前面,因此也称...
  • ZhouSanduo18
  • ZhouSanduo18
  • 2016年09月08日 15:37
  • 3057

USACO 第二章最后一题,呵呵

最短路径的求法。。。
  • morgan_xww
  • morgan_xww
  • 2011年02月27日 19:41
  • 648

1008_《阿里巴巴集团杯》ACM华工赛点网络赛最后一题

优先队列 插入删除查找
  • xjwJava
  • xjwJava
  • 2011年04月27日 23:47
  • 2714

hdu 5115 Dire Wolf(放假前的最后一题)

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5115题意:我们现在有n只排成一排的狼,对于第i只狼,他有两个伤害值aia_i和bib_i。...
  • tjandbj
  • tjandbj
  • 2016年08月27日 20:04
  • 194

【笔试】56、金山笔试最后一题,数据统计

国庆之前参加了金山的笔试,但是做到最后一题没有做完,并且当时下雨思路有点乱,没有做出来,这里补上,其实倒数第二题思路没问题,但是回来检查的时候,发现疏忽了一个地方,暂且不提,这个题应该有多种解法,这里...
  • cutter_point
  • cutter_point
  • 2015年10月08日 18:01
  • 679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最后一题
举报原因:
原因补充:

(最多只允许输入30个字)