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:题目都不同

Posted by 09gkpeng at 2010-07-07 23:04:08 on Problem 1141
In Reply To:different result on different OJ Posted by:Analgesic at 2009-08-19 09:22:52
> ZOJ: WA
> POJ: AC
> 
> Is the test data different or the check program different?
> 
> this is my submit:
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> #include <cstdio>
> #include <cstring>
> #include <string>
> #include <iostream>
> #define MAXL 100
> using namespace std;
> int opt[MAXL+1][MAXL+1];
> string text;
> string opt_str[MAXL+1][MAXL+1];
> 
> int solve(int s,int l){
>   int min=2e9,temp;
>   string min_str;
>   if(opt[s][l]!=-1) return opt[s][l];
>   if(text[s]=='('&&text[s+l-1]==')' || text[s]=='['&&text[s+l-1]==']'){
>     temp=solve(s+1,l-2);
>     if(temp<min){
>       min=temp;
>       if(text[s]=='(')
> 	min_str="("+opt_str[s+1][l-2]+")";
>       else
> 	min_str="["+opt_str[s+1][l-2]+"]";
>     }
>   }
>   if(text[s]=='('){
>     temp=solve(s+1,l-1)+1;
>     if(temp<min){
>       min=temp;
>       min_str="("+opt_str[s+1][l-1]+")";
>     }
>   }
>   if(text[s]=='['){
>     temp=solve(s+1,l-1)+1;
>     if(temp<min){
>       min=temp;
>       min_str="["+opt_str[s+1][l-1]+"]";
>     }
>   }
>   if(text[s+l-1]==')'){
>     temp=solve(s,l-1)+1;
>     if(temp<min){
>       min=temp;
>       min_str="("+opt_str[s][l-1]+")";
>     }
>   }
>   if(text[s+l-1]==']'){
>     temp=solve(s,l-1)+1;
>     if(temp<min){
>       min=temp;
>       min_str="["+opt_str[s][l-1]+"]";
>     }
>   }
>   for(int i=1;i<l;++i){
>     temp=solve(s,i)+solve(s+i,l-i);
>     if(temp<min){
>       min=temp;
>       min_str=opt_str[s][i]+opt_str[s+i][l-i];
>     }
>   }
>   opt[s][l]=min;
>   opt_str[s][l]=min_str;
>   return min;
> }
> void init(){
>   memset(opt,-1,sizeof(opt));
>   for(int i=0;i<=text.length();++i){
>     opt[i][0]=0;
>     opt_str[i][0]="";
>   }
> }
> int main(){
>   char buffer[MAXL+2];
>   while(fgets(buffer,MAXL+2,stdin)){
>     text=string(buffer,buffer+strlen(buffer)-1);
>     if(buffer[0]=='\n'){
>       cout<<endl;
>       continue;
>     }
>     init();
>     solve(0,text.length());
>     cout<<opt_str[0][text.length()]<<endl;
>   }
>   return 0;
> }

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