解题思路:
注意事项:
参考代码:
#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语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1643 |
最长单词 (C语言代码)浏览:1392 |
字符串比较 (C语言代码)答案错误????浏览:601 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1342 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:559 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:475 |
P1000 (C语言代码)浏览:877 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:560 |
关于float,double变量的几点说明浏览:1825 |
演讲大赛评分 (C语言代码)浏览:1641 |