2 5 6 -1 5 4 -7 7 0 6 -1 1 -6 7 -5
Case 1: 14 1 4 Case 2: 7 1 6
这个题
前面好逑 很简单的 dp 三角模型
找到 每个位置的最大值
就是最后的 位置
一直不知道哪里 wrong
实在找不到错误。
按照窦窦的错误来了
我的
#include<iostream> #include<string.h> #include<set> #include<stdio.h> #include<vector> #include<algorithm> #include<numeric> #include<math.h> #include <iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int main() { int t; int n; int pao[100000]; int sum[100000]; int max[100000]; cin>>t; int i; int j=1; int x1,x2; while(t--) { cin>>n; memset(pao,0,sizeof(pao)); memset(sum,0,sizeof(sum)); memset(max,0,sizeof(max)); x1=1; x2=1; long long int max2=pao[1]; for(i=1;i<=n;i++) { cin>>pao[i]; } for(i=1;i<=n;i++) { if(max[i-1]+pao[i]<pao[i]) { max[i]=pao[i]; if(max2<max[i]) { max2=max[i]; x1=i; } } if(max[i-1]+pao[i]>=pao[i]) { max[i]=max[i-1]+pao[i]; } } long long int max1=pao[1]; for(i=1;i<=n;i++) { if(max1<max[i]) { x2=i; max1=max[i]; } } cout<<"Case "<<j<<":"<<endl; j++; cout<<max1<<" "<<x1<<" "<<x2<<endl; } return 0; } ac代码
#include<iostream> #include<string.h> #include<set> #include<stdio.h> #include<vector> #include<algorithm> #include<numeric> #include<math.h> #include<string.h> #include<sstream> #include<stdio.h> #include<string> #include<cstdlib> #include<algorithm> #include<iostream> #include<map> #include<queue> #include<iomanip> #include<cstdio> using namespace std; int main() { //freopen("r.txt","r",stdin); int n,m,sum,maxx,j,k; int a[100005]; cin>>n; int ans=1,step; while(n--) { cin>>m; for(int i=0;i<m;i++) { scanf("%d",&a[i]); } sum=0; maxx=-1001; step=1; for(int i=0;i<m;i++) { sum+=a[i]; if(sum>maxx) { j=step; k=i+1; maxx=sum; } if(sum<0) { sum=0; step=i+2; } } cout<<"Case "<<ans++<<":"<<endl; cout<<maxx<<" "<<j<<" "<<k<<endl; if(n>0) cout<<endl; } return 0; }