C++动态规划

数塔:

#include <iostream>
using namespace std;
int a[1000][1000];
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<i+1;j++){
			cin>>a[i][j];
		}
	}
	for(int i=n-2;i>=0;i--){
		for(int j=0;j<i+1;j++){
			a[i][j]+=a[i+1][j]>a[i+1][j+1]?a[i+1][j]: a[i+1][j+1];
		}
	}
	cout<<a[0][0];
}

最大连续子序列

#include <iostream>
#include <algorithm>
using namespace std;
int a[1000];
int main(){
	int n;int mx=0;
	while(1){
		mx=0;
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i];
		}
		for(int i=1;i<=n;i++){
			a[i]+=a[i-1]>0?a[i-1]:0;
			if(a[i]>mx) mx=a[i];
		}
		cout<<mx;
	}
}

  馅饼(仿数塔):

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[13][1000];int x,y;
int main(){
	int n;int mx=0;
	while(1){
		cin>>n;
		for(int i=0;i<n;i++){
			cin>>x>>y;
			a[x+1][y]+=1;
			if(y>mx) mx=y;
		}
		for(int i=mx-1;i>=0;i--){
			for(int j=1;j<12;j++){
				a[j][i]+=max(a[j-1][i+1],max(a[j][i+1],a[j+1][i+1]));
			}
		}
		cout<<a[6][0];
	}
}

  

posted @ 2020-07-15 21:12  慕舲-不再使用  阅读(340)  评论(0编辑  收藏  举报