谁能帮我看看哪里出问题了?
查看原帖
谁能帮我看看哪里出问题了?
57755
Happy_Orca楼主2022/6/27 19:46
#include<bits/stdc++.h>
using namespace std;
int n,ans,a[100005][5],f[100005][5];
inline int read(){
    int ret=0;char f=1,ch=getchar();
    while(!isdigit(ch)) f=(ch=='-'?-f:f),ch=getchar();
    while(isdigit(ch)) ret=ret*10+ch-'0',ch=getchar();
    return ret;
}
int main(){
	n=read();
	for(int i=1;i<=n;i++) a[i][1]=read(),a[i][2]=read(),a[i][3]=read();
	for(int l=1;l<=3;l++){
		memset(f,0,sizeof f);
		for(int i=1;i<=3;i++) if(i!=l) f[2][i]=a[1][l]+a[2][i];
		for(int i=3;i<=n;i++){
			f[i][1]=max(f[i-1][2],f[i-1][3])+a[i][1];
			f[i][2]=max(f[i-1][1],f[i-1][3])+a[i][2];
			f[i][3]=max(f[i-1][1],f[i-1][2])+a[i][3];
		}
		for(int i=1;i<=3;i++) if(i!=l) ans=max(ans,f[n][i]);
	}
	printf("%d\n",ans);
	return 0;
}
2022/6/27 19:46
加载中...