zoukankan      html  css  js  c++  java
  • 1836Alignment

    又是一道没有通过的题目

    例子都对了,就是出错啊

    我的代码坑爹的没有通过,其中列举了我的两种方法,第二种做到我蛋碎,混乱啊

    #include "iostream"
    using namespace std;
    int main(){
      int n,i=0,c,k,j,flag,mid,max=0,l;
      float num[1100],d[1100];
      cin>>n;
      while(n--)cin>>num[i++];
      for(l=0;l<i;l++){
       cout<<"l "<<l<<endl;
       d[0]=num[0];
       c=0;
       cout<<"up"<<endl;
       for(j=1;j<l;j++){
         for(k=c;k>=0;k--)
          if(d[k]<=num[j])break;
         d[k+1]=num[j];
         if(k==c)c++;
         for(k=0;k<=c;k++)cout<<d[k]<<' ';cout<<endl;
       }
       if(l)c++;
       d[c]=num[l];
       mid=c;
       cout<<c<<" d[c] "<<d[c]<<endl;
       cout<<"down"<<endl;
       for(j=l+1;j<i;j++){
         for(k=c;k>=mid;k--)
          if(d[k]>=num[j])break;
         d[k+1]=num[j];
         if(k==c)c++;
         for(k=0;k<=c;k++)cout<<d[k]<<' ';
        cout<<endl;
       }
       cout<<endl;
       if(max<c)max=c;
      }
      cout<<i-c-2<<endl;
     // cout<<endl;
     }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    /*#include "iostream"
    using namespace std;
    int main(){
      int n,i=0,c,k,j,flag,mid,max=0,l;
      float num[1100],d[1100];
      cin>>n;
      while(n--)cin>>num[i++];
      for(l=0;l<i;l++){
       //cout<<"l "<<l<<endl;
    
       d[0]=num[0];
       c=1;
       flag=0;
       if(l==0){mid=0;flag=1;}
       for(j=1;j<i;j++){
        if(j<l){
          for(k=c-1;k>=0;k--)
          if(d[k]<=num[j])break;
        }
        else {
             if(!flag){mid=c;flag=1;d[c]=num[j];c++;continue;}
             for(k=c-1;k>=mid;k--)
             if(d[k]>=num[j])break;
        }
        d[k+1]=num[j];
        if(k==c-1)c++;
        //for(k=0;k<c;k++)cout<<d[k]<<' ';
        //cout<<endl;
      }
     // cout<<endl;
      if(max<c)max=c;
     }
    
      cout<<i-max<<endl;
    }
    */

    网上的答案

    #include<iostream>
    //#include<fstream>
    using namespace std;
    
    int max(int a,int b)
    {
    return a>b?a:b;
    }
    
    double height[1000];
    int a[1000],b[1000];
    int main()
    {
    // ifstream cin ("1.txt");
    int i, j, n, ans;
    while(cin>>n){
    for (i=0;i<n;i++) cin>>height[i];
    a[0]=1;
    for(i=1;i<n;i++)
    {
    a[i]=1;
    for (j=i-1;j>=0;j--)
      if (height[i]>height[j]) a[i]=max(a[i],a[j]+1);//a[i]表示正向第1个到第i个上升子段最大长度
    }
    b[n-1]=1;
    for(i=n-2;i>=0;i--)
    {
    b[i] = 1;
    for (j=i+1;j<n;j++)
      if (height[i]>height[j]) b[i]=max(b[i],b[j]+1);//b[i]表示反向第n-1到第i个上升子段最大长度
    }
    ans = 0;
    for(i=0;i<n;i++)
    for (j=i+1;j<n;j++)
    ans = max(ans, a[i] + b[j]);
    cout<<n - ans<<endl;
    }
    return 0;
    }
  • 相关阅读:
    bzoj 1030 [JSOI2007]文本生成器
    Swift 学习笔记 (闭包)
    Swift 学习笔记 (函数)
    HTML 学习笔记 JQueryUI(Interactions,Widgets)
    HTML 学习笔记 JQuery(表单,表格 操作)
    HTML 学习笔记 JQuery(animation)
    HTML 学习笔记 JQuery(盒子操作)
    HTML 学习笔记 JQuery(事件)
    HTML 学习笔记 JQuery(DOM 操作3)
    HTML 学习笔记 JQuery(DOM 操作2)
  • 原文地址:https://www.cnblogs.com/dowson/p/3255970.html
Copyright © 2011-2022 走看看