本题取min的作用是什么
查看原帖
本题取min的作用是什么
490694
Compound_Interest楼主2022/4/26 21:40

什么时候取min有作用

#include<cstdio>
#include<cstring>
#include<algorithm> 
using namespace std;
const int maxn=2010;
int dp[maxn][maxn],n,a[maxn];
int main(){
	while(~scanf("%d",&n)){
		for(int i=1;i<=n;i++) scanf("%d",&a[i]);
		memset(dp,0x3f,sizeof(dp));
		dp[1][1]=-1;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=i;j++){
				if(dp[i][j]==0x3f3f3f3f) continue;
				if(a[i+1]>a[i]){
					if(j+1==i-j+1) dp[i+1][j+1]=min(dp[i+1][j+1],dp[i][j]);
					else dp[i+1][j+1]=dp[i][j];
				}
				if(a[i+1]>dp[i][j]){
					if(j+1==i-j+1) dp[i+1][i-j+1]=min(dp[i+1][i-j+1],a[i]);
					else dp[i+1][i-j+1]=a[i];
				}
			}
		}
		if(dp[n][n/2]==0x3f3f3f3f) printf("No!\n");
		else printf("Yes!\n");
	}
	return 0;
} 

我认为是更好可以分成i/2两个区间且两个if都进的时候取min

但是这份代码没分

2022/4/26 21:40
加载中...