zoukankan      html  css  js  c++  java
  • 一本通 1259:【例9.3】求最长不下降序列

    求最长不下降序列

    状态转移方程:if(ai>aj) fi = max(fi, fj+1)

    #include <iostream>
    #include <cstdio>
    using namespace std;
    //Mystery_Sky
    //
    #define M 1000
    int f[M], a[M], n, t=0;
    int ans, ans_num, next[M], ans_xu[M];
    int main() {
    	scanf("%d", &n);
    	for(int i = 1; i <= n; i++) scanf("%d", &a[i]), f[i] = 1;
    	for(int i = 2; i <= n; i++)
    		for(int j = 1; j < i; j++) 
    			if(a[i] >= a[j]) { //坑点 
    				if(f[j] + 1 > f[i]) {
    					f[i] = f[j] + 1;
    					next[i] = j;
    				} 
    			}
    	for(int i = 1; i <= n; i++) {
    		if(f[i] > ans) {
    			ans = f[i];
    			ans_num = i;
    		}
    	}
    	printf("max=%d
    ", ans);
    	while(ans_num) {
    		ans_xu[++t] = a[ans_num];
    		ans_num = next[ans_num];
    	}
    	for(int i = t; i >= 1; i--) printf("%d ", ans_xu[i]);
    	return 0;
    }
    
    唯愿,青春不辜负梦想,未来星辰闪耀
  • 相关阅读:
    RabbitMQ
    RabbitMQ
    RabbitMQ
    RabbitMQ
    RabbitMQ
    RabbitMQ
    RabbitMQ
    .net 5.0
    redis
    分布式同步服务中间件
  • 原文地址:https://www.cnblogs.com/Benjamin-cpp/p/10786305.html
Copyright © 2011-2022 走看看