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

为什么老是超时呢

Posted by TangMing at 2009-05-12 18:07:25 on Problem 3007
//#include "stdafx.h"
#include<iostream>
#include<string>
#include<set>
using namespace std;


int main(int argc, char* argv[])
{
 
 string str;
 char s[85];
 int n;
 scanf("%d\n",&n);
 int i,j,k;
 while(gets(s))
 { 
   str=s;
   int l=str.length();
   if(l==2)
   {
     if(str[0]==str[1])printf("1\n");
  else printf("2\n");
  continue;
   }
   set<string>se;
   //构造所有字串
   for(i=1;i<l;i++)//终点
   {
   string zc1,zc10;//前子串
   string zc2,zc20;//后子串
   string str2;//可行子串
   for(j=0,k=i-1;j<i;j++,k--)//构造前子串
   {
     zc10+=str[j];
     zc1+=str[k];
   }
   for(j=i,k=l-1;j<l;j++,k--)//构造后子串
   {
      zc20+=str[j];
   zc2+=str[k];
   }
   // reverse(zc1.begin(),zc1.end());
   //reverse(zc2.begin(),zc2.end());  
   //8种组合方式
   //str2=zc10+zc20;
   se.insert(str);

   str2=zc10+zc2;
   se.insert(str2);

   str2=zc1+zc20;
   se.insert(str2);

   str2=zc1+zc2;
   se.insert(str2);

   str2=zc20+zc10;
   se.insert(str2);
 
   str2=zc20+zc1;
   se.insert(str2);
 
   str2=zc2+zc10;
   se.insert(str2);
  
   str2=zc2+zc1;
   se.insert(str2);   
   }//for
   printf("%d\n",se.size());
 }//while
 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