轰炸问题、连续子序列的积、n个最大连续子序列和

来源:互联网 发布:俄罗斯杜马选举知乎 编辑:程序博客网 时间:2024/04/30 03:06
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;int m,n,h,w;int a[1001][1001],su[1001][1001];int main(){int i,j,Ma=-INT_MAX;cin>>m>>n>>w>>h;for(i=1;i<=m;i++)for(j=1;j<=n;j++){cin>>a[i][j];su[i][j]=su[i][j-1]+su[i-1][j]-su[i-1][j-1]+a[i][j];}for(i=1;i<=m-w+1;i++)for(j=1;j<=n-h+1;j++){Ma=max(Ma,su[i+w-1][j+h-1]+su[i-1][j-1]-su[i-1][j+h-1]-su[i+w-1][j-1]);}cout<<Ma<<endl;return 0;}



#include<stdio.h>#include<string.h>#include<iostream>using namespace std;int a[1001];int f[11][1001];int main(){int i,j,m,k,n,temp,Max;cin>>n>>k;for(i=1;i<=n;++i)cin>>a[i];for(i=1;i<=k;i++)for(j=1;j<=n;j++){f[i][j]=f[i][j-1]+a[j];for(m=i-1;m<=j-1;m++){temp=f[i-1][m]+a[j];if(temp>f[i][j])f[i][j]=temp;}}Max=f[k][k];for(i=k+1;i<=n;++i){if(f[k][i]>Max)Max=f[k][i];}cout<<Max<<endl;return 0;}

#include<stdio.h>#include<string.h>#include<iostream>#define INF 1<<20using namespace std;long long a[1001],g[1001],f[1001];int main(){int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];f[1]=g[1]=a[1];for(int i=2;i<=n;i++){f[i]=a[i];f[i]=max(f[i],f[i-1]*a[i]);f[i]=max(f[i],g[i-1]*a[i]);g[i]=a[i];g[i]=min(g[i],f[i-1]*a[i]);g[i]=min(g[i],g[i-1]*a[i]);}long long maxx=-INF,minn=INF;for(int i=1;i<=n;i++){if(f[i]>maxx)maxx=f[i];if(g[i]<minn)minn=g[i];}cout<<maxx<<endl;cout<<minn<<endl;return 0;}


原创粉丝点击