切换到宽版
  • 6249阅读
  • 4回复

有谁知道波兰算法?能否讲讲? [复制链接]

上一主题 下一主题
离线sm-star
 
只看楼主 倒序阅读 0 发表于: 2007-08-27
似乎是关于表达式的算法
离线yiyi
只看该作者 1 发表于: 2007-09-17
SPOJ ONP

prograM onp;
const
  os='+-*/^()#';
  w:array [1..8] of string[8]=('>><<<<>>',
                              '>><<<<>>',
                              '>>>><<>>',
                              '>>>><<>>',
                              '>>>>><>>',
                              '<<<<<<= ',
                              '>>>>> >>',
                              '<<<<<< =');
var
  s:ansistring;
  c:char;
  i,t,r,op,np:integer;
  o:array [1..402] of char;
  n:array [1..402] of ansistring;
procedure process;
  begin
    np:=0; op:=1; o[1]:='#';
    r:=1;  s:=s+'#';
    while (s[r]<>'#') or (o[op]<>'#') do
      begin
        if pos(s[r],os)=0 then
          begin inc(np); n[np]:=s[r]; inc(r); continue end;
        c:=w[pos(o[op],os)][pos(s[r],os)];
        if c='<' then
          begin inc(op); o[op]:=s[r]; inc(r); end;
        if c='=' then
          begin dec(op); inc(r) end;
        if c='>' then
          begin dec(np); n[np]:=n[np]+n[np+1]+o[op];  dec(op); end;
      end;
    writeln(n[np]);
  end;
begin
  readln(t);
  for i:=1 to t do
    begin
      readln(s);
      process
    end;
end.
离线shenye1992
只看该作者 2 发表于: 2007-09-17
不懂
离线orangeclk
只看该作者 3 发表于: 2007-09-17
是后缀表达式吧。
RP降至零点,NOIP2007完美彻底挂掉。。。
离线orangeclk
只看该作者 4 发表于: 2007-09-17
就是把中缀表达式变成后缀表达式。
RP降至零点,NOIP2007完美彻底挂掉。。。
快速回复
限100 字节
 
上一个 下一个