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

在Ural上过了,POJ上总是WA,是不是SPJ的问题?

Posted by Liyaodong at 2009-08-31 10:41:39 on Problem 1141
here's my code:
var
	str:string;
	n,L,i,j,k:integer;
	f:array[1..100,1..100]of integer;
	G:array[1..100,1..100]of string;

function match(c:char):string;
begin
	if (c='(')or(c=')')then exit('()');
	if (c='[')or(c=']')then exit('[]');
end;

function pair(c1,c2:char):boolean;
begin
        if (c1='(')and(c2=')')then exit(true);
        if (c1='[')and(c2=']')then exit(true);
        exit(false);
end;

begin
	readln(str);
	n:=length(str);
        if n=0 then exit;
	for i:=1 to n do for j:=i to n do f[i,j]:=100;
	for L:=1 to n do
	for i:=1 to n-L+1 do begin
		j:=i+l-1;
		if i=j then begin
			f[i,j]:=1;
			g[i,j]:=match(str[i]);
		end else begin
			if (str[i]='(')and(f[i,j]>=f[i+1,j]+1)then begin
				f[i,j]:=f[i+1,j]+1;
				g[i,j]:='('+g[i+1,j]+')';
			end;
			if (str[i]='[')and(f[i,j]>=f[i+1,j]+1)then begin
				f[i,j]:=f[i+1,j]+1;
				g[i,j]:='['+g[i+1,j]+']';
			end;
			if (str[j]=')')and(f[i,j]>=f[i,j-1]+1)then begin
				f[i,j]:=f[i,j-1]+1;
				g[i,j]:='('+g[i,j-1]+')';
			end;
			if (str[j]=']')and(f[i,j]>=f[i,j-1]+1)then begin
				f[i,j]:=f[i,j-1]+1;
				g[i,j]:='['+g[i,j-1]+']';
			end;
			if (pair(str[i],str[j]))and(f[i,j]>=f[i+1,j-1])then begin
				f[i,j]:=f[i+1,j-1];
				g[i,j]:=str[i]+g[i+1,j-1]+str[j];
			end;
			for k:=i+1 to j do if f[i,j]>=f[i,k-1]+f[k,j] then begin
				f[i,j]:=f[i,k-1]+f[k,j];
				g[i,j]:=g[i,k-1]+g[k,j];
			end;
		end;
	end;
	writeln(g[1,n]);
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