zoukankan      html  css  js  c++  java
  • 1141Brackets Sequence

    真的是一道好题,不仅仅在dp[i][j]的表示上,还是在输出上pos上的确认上

    之前有一个错误,不过后来改了,就ACCEPT了

    work();
    print(1,n);
    cout<<endl;就缺了最后的cout<<endl;坑爹啊,就这个小细节

    #include "iostream"
    #include "string.h"
    #define MAXN 120
    #define INF 100000
    using namespace std;
    int f[MAXN][MAXN],pos[MAXN][MAXN];
    int n;
    char list[200];
    
    void work(){
      int i,v,j,k,tem;
      memset(f,0,sizeof(f));
      for(i=n;i>=1;i--){
        list[i]=list[i-1];
        f[i][i]=1;
      }
      for(v=1;v<n;v++){
        for(i=1;i<=n-v;i++){
          j=v+i;
          f[i][j]=INF;
          if(list[i]=='('&&list[j]==')'||(list[i]=='['&&list[j]==']')){
            f[i][j]=f[i+1][j-1];
          }
          pos[i][j]=-1;
          for(k=i;k<j;k++){
            tem=f[i][k]+f[k+1][j];
            if(f[i][j]>tem){
              f[i][j]=tem;
              pos[i][j]=k;
            }
          }
        }
      }
    }
    
    void print(int s,int e){
      if(s>e)return;
      else{
        if(s==e){
          if(list[s]=='('||list[s]==')')cout<<"()";
          else cout<<"[]";
        }
        else {
          if(pos[s][e]==-1){
            if(list[s]=='('){
                  cout<<'(';
                  print(s+1,e-1);
                  cout<<')';
               }
            else{
              cout<<'[';
              print(s+1,e-1);
              cout<<']';
            }
          }
          else {
            print(s,pos[s][e]);
            print(pos[s][e]+1,e);
          }
        }
      }
    }
    int main(){
      cin>>list;
      n=strlen(list);
      work();
      print(1,n);
      cout<<endl;
    }
  • 相关阅读:
    Ambari Server 架构
    [Spark]-源码解析-RDD之transform
    [Spark]-源码解析-RDD的五大特征体现
    [Spark]-作业调度与动态资源分配
    [Spark]-集群与日志监控
    [Spark]-Streaming-调优
    [Spark]-调优
    [Spark]-Streaming-Persist与CheckPoint
    [Spark]-Streaming-输出
    [Spark]-Streaming-操作
  • 原文地址:https://www.cnblogs.com/dowson/p/3316284.html
Copyright © 2011-2022 走看看