很简单的动态规划的一个题目
#include <iostream> #include <algorithm> using namespace std; int main() { //freopen("data.in.txt","r",stdin); //freopen("data.out.txt","w",stdout); int n; cin >> n; int *a = new int [n]; int *b = new int [n]; //开辟两个动态数组 for(int i = 0; i < n; i++) { cin >> a[i]; b[i]=1;//b[i]表示前i+1个数中的最大不下降子序列的长度 初始值为1 } for(int i = 0; i < n; i++) { for(int j = 0; j < i; j++) { if(a[i] >=a[j]) //如果a[i]大于等于a[j],那么最大不下降子序列的长度就会+1 b[i] = max(b[i], b[j]+1); //我们取较大的那个 } } sort(b,b+n);//对数组进行排序 cout<<b[n-1]<<endl;//输出最大值 return 0; }
0.0分
0 人评分
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:721 |
简单的a+b (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:658 |
矩阵乘法 (C++代码)浏览:1662 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:736 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:634 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:570 |
Hello, world! (C++代码)浏览:1778 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:624 |
母牛的故事 (C语言代码)浏览:739 |