1 条题解
-
0
C :
#include<stdio.h> int max(int a,int b) { return(a > b? a:b); } int a[1005][1005]; int main() { int i,j,n; scanf("%d",&n); for(i = 1;i <= n;i++) for(j = 1;j <= i;j++) scanf("%d",&a[i][j]); for(i = n;i >= 2;i--)//当i<i时 越界 for(j = 1;j < i;j++)//当j=i时 越界 a[i-1][j] = a[i-1][j]+max(a[i][j],a[i][j+1]);//递归 printf("%d\n",a[1][1]); return 0; }
C++ :
#include<iostream> #include<algorithm> using namespace std; const int N(1005); long long a[N][N],f[N][N]={0}; int main() { //ifstream cin("exam1.in"); //ofstream cout("exam1.out"); int n; cin>>n; for (int i=1;i<=n;i++) for (int j=1;j<=i;j++) cin>>a[i][j]; f[1][1]=a[1][1]; for (int i=2;i<=n;i++) for (int j=1;j<=i;j++) f[i][j]=max(f[i-1][j-1],f[i-1][j])+a[i][j]; long long ans=f[n][1]; for (int j=1;j<=n;j++) ans=max(ans,f[n][j]); cout<<ans<<endl; //system("pause"); return 0; }
Pascal :
Program TK2596; uses math; var i,j,n:longint; a,f:array[0..1000,0..1000]of longint; Begin readln(n); for i:=1 to n do for j:=1 to i do read(a[i][j]); for i:=n downto 1 do for j:=1 to i do begin if i=n then f[i][j]:=a[i][j] else f[i][j]:=a[i][j]+max(f[i+1][j],f[i+1][j+1]); end; writeln(f[1][1]); End.
- 1
信息
- ID
- 749
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者