文章

20

粉丝

412

获赞

75

访问

168.5k

头像
动态规划:砍树问题
P1852 北京师范大学机试题
发布于2021年4月26日 09:13
阅读数 8.7k

#include <iostream>
#include <string.h>
using namespace std;

int height[1005];
int dp[1005][1005];

int main() {
	int n, maximun;
	while(cin >> n) {
		maximun = 1;
		memset(dp, 0, sizeof(dp));
		for(int i = 1;i <= n;i++) {
			cin >> height[i];
			dp[i][i] = 1;
		}
		for(int i = 1;i <= n;i++) {
			for(int gap = n-i;gap > 0;gap--) {
				for(int j = i+gap;j <= n;j++) {
					if(height[j] >= height[j-gap])
						dp[i][j] = max(dp[i][j-gap]+1, dp[i][j]);
					maximun = max(dp[i][j], maximun);
				}
			}
		}
		cout << n-maximun << endl;
	}
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发