Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:为什么会过不了呢?所有的数据都对呀。(附带code)

Posted by raoxiaojia at 2009-08-28 19:39:10 on Problem 1458
In Reply To:为什么会过不了呢?所有的数据都对呀。(附带code) Posted by:RUNSLOWLY at 2008-09-27 14:30:16
这是我的代码,用P写的,一样,而且明显的O(行数×字符串1长度×字符串2长度),居然还TLE?
用的动规算法。
var
        i,j,k:integer;
        n,m:longint;
        str1,str2:array[0..2000] of char;
        str1len,str2len:longint;
        ch:char;
        f:array[0..2000,0..2000] of integer;
procedure dynamic;
var
        i,j,k:longint;
begin
        for i:=0 to n do
        begin
                for j:=0 to m do
                begin
                        f[i,j]:=0;
                end;
        end;
        for i:=1 to n do
        begin
                for j:=1 to m do
                begin
                        if str1[i]=str2[j] then
                        begin
                                f[i,j]:=f[i-1,j-1]+1;
                        end
                        else
                        begin
                                if f[i-1,j]>=f[i,j-1] then
                                begin
                                        f[i,j]:=f[i-1,j];
                                end
                                else
                                begin
                                        f[i,j]:=f[i,j-1];
                                end;
                        end;
                end;
        end;
end;
begin
        while not eof do
        begin
                str1len:=0;
                str2len:=0;
                read(ch);
                str1len:=0;
                while ch<>' ' do
                begin
                        inc(str1len);
                        str1[str1len]:=ch;
                        read(ch);
                end;
                while ch=' ' do
                begin
                        read(ch);
                end;
                while not eoln do
                begin
                        inc(str2len);
                        str2[str2len]:=ch;
                        read(ch);
                end;
                inc(str2len);
                str2[str2len]:=ch;
                n:=str1len;
                m:=str2len;
                dynamic;
                writeln(f[n,m]);
        end;
end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator