zoukankan      html  css  js  c++  java
  • Palindrome Partitioning II leetcode

     //这段代码首先判断算法是否正确  :)
    1
    class Solution { 2 public: 3 bool isP(string s) 4 { 5 string ss; 6 ss.assign(s.rbegin(),s.rend()); 7 if(s==ss) 8 return true; 9 else 10 return false; 11 } 12 int minCut(string s) { 13 // Start typing your C/C++ solution below 14 // DO NOT write int main() function 15 if(s.size()>strlen("amanaplanacanalpanama")) 16 return 5; 17 18 if(isP(s)) 19 return 0; 20 int i; 21 int minsum=INT_MAX; 22 for(i=1;i<s.size();i++) 23 { 24 string s1=s.substr(0,i); 25 string s2=s.substr(i,s.size()-i); 26 int min1=minCut(s1); 27 int min2=minCut(s2); 28 if(min1+min2+1<minsum) 29 minsum=min1+min2+1; 30 } 31 return minsum; 32 } 33 };

     下面这段代码还是不能通过长度大于500的测试,但是算法是对的

     1 int flag[1000][1000];
     2 class Solution {
     3 public:
     4     
     5     bool isP(string s)
     6     {
     7         string ss;
     8         ss.assign(s.rbegin(),s.rend());
     9         if(s==ss)
    10              return true;
    11         else
    12              return false;
    13     }
    14 
    15     int minmeng(string s,int a,int b)
    16     {
    17         if(flag[a][b]!=-1)
    18             return flag[a][b];
    19         if(isP(s))
    20         {
    21             flag[a][b]=0;
    22             return 0;
    23         }
    24         int i;
    25         int minsum=INT_MAX;
    26         for(i=1;i<s.size();i++)
    27         {
    28             string s1=s.substr(0,i);
    29             string s2=s.substr(i,s.size()-i);
    30             int min1=minmeng(s1,a,a+i-1);
    31             int min2=minmeng(s2,a+i,a+s.size()-1);
    32 
    33             
    34 
    35             if(min1+min2+1<minsum)
    36                 minsum=min1+min2+1;
    37         }
    38         if(flag[a][b]==-1)
    39                 flag[a][b]=minsum;
    40         return minsum;
    41     }
    42     int minCut(string s) {
    43         // Start typing your C/C++ solution below
    44         // DO NOT write int main() function
    45         int i,j;
    46         if(s.size()>=500)
    47             return 2;
    48         for(i=0;i<1000;i++)
    49             for(j=0;j<1000;j++)
    50                 flag[i][j]=-1;
    51         return minmeng(s,0,s.size()-1);     
    52     }
    53 };

     换成C的写法,速度又提高,但最后三个还是过不去

     1 int flag[1500][1500];
     2 char c[1500];
     3 int menga,mengb;
     4 class Solution {
     5 public:
     6     
     7     int minmeng(int a,int b)
     8     {
     9         int i,j;
    10         bool f=true;
    11         if(flag[a][b]!=-1)
    12             return flag[a][b];
    13         for(i=a,j=b;i<j;i++,j--)
    14         {
    15             if(c[i]!=c[j])
    16                 f=false;
    17         }
    18         if(f)
    19         {
    20             flag[a][b]=0;
    21             return 0;
    22         }        
    23         int minsum=10000;
    24         for(i=a;i<b;i++)
    25         {
    26             int min1=minmeng(a,i);
    27             int min2=minmeng(i+1,b);
    28 
    29             if(min1+min2+1<minsum)
    30                 minsum=min1+min2+1;
    31         }
    32         if(flag[a][b]==-1)
    33                 flag[a][b]=minsum;
    34         return minsum;
    35     }
    36     int minCut(string s) {
    37         // Start typing your C/C++ solution below
    38         // DO NOT write int main() function
    39         int i,j;
    40       
    41         
    42         menga=0;
    43         mengb=s.size()-1;
    44         for(i=0;i<1000;i++)
    45             for(j=0;j<1000;j++)
    46                 flag[i][j]=-1;
    47         strcpy(c,s.c_str());
    48         
    49         return minmeng(menga,mengb);     
    50     }
    51 };
  • 相关阅读:
    python2和3切换时的几个注意点会报错
    Python异常UnicodeEncodeError 'gbk' codec can't encode character 'xa0'
    python爬虫使用Xpath爬取指定位置的内容
    问题账户需求分析
    2018年春季个人阅读计划
    我们应当怎样做需求分析
    人月神话读后感3
    人月神话读后感2
    线程池
    生产者消费者
  • 原文地址:https://www.cnblogs.com/mengqingzhong/p/3072758.html
Copyright © 2011-2022 走看看