导弹拦截
389,207,155,300,299,170,158,65
6,1
#include<cstdio> #include<iostream> #include<sstream> #include<string> using namespace std; int main(){ int a[25],b[25]={1},c[25]={0},x,n=0,cnt=0,maxnn=0; string s; getline(cin,s); for(int i=0;i<s.length();i++) if(s[i]==',') s[i]=' '; istringstream ss(s); while(ss>>x) a[n++]=x; for(int i=0;i<n;i++){ int maxn=0; for(int j=i-1;j>=0;j--) if(a[i]<=a[j]&&b[j]>maxn) maxn=b[j]; b[i]=maxn+1; } for(int i=0;i<n;i++){ for(int j=0;j<=cnt;j++){ if(a[i]<c[j]){ c[j]=a[i]; break; } else if(j==cnt){ cnt++; c[cnt]=a[i]; break; } } if(b[i]>maxnn) maxnn=b[i]; } printf("%d,%d\n",maxnn,cnt-1); return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/a995549572/article/details/47378655