解题思路:
注意事项:
参考代码:
#include<iostream> #include<algorithm> using namespace std; int a[1001],n; int b[1001]={0},k=0; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) { if(a[i]>b[k-1]) {//如果a[i]大于b数组中的最后一个数 b[k]=a[i]且b数组长度+1 b[k++]=a[i]; } else { int r=upper_bound(b,b+k,a[i])-b;//二分查找在b中第一个大于a[i]的位置 b[r]=a[i]; } } cout<<k<<endl; return 0; }
0.0分
1 人评分
字符串对比 (C语言代码)浏览:1398 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1051 |
三角形 (C++代码)递推浏览:755 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:500 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:582 |
C语言训练-亲密数 (C语言代码)浏览:682 |
1048题解(读入回车问题)浏览:554 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:403 |
分解质因数 (C++代码)浏览:1471 |