数字三角形

来源:互联网 发布:java等腰三角形代码 编辑:程序博客网 时间:2024/06/10 19:04
1.递推计算
#include<iostream>#include<cstdio>using namespace std;int mx(int a,int b){    if(a>b)        return a;    else        return b;}int main (){    int n;    int a[200][200];     while(~scanf("%d",&n))     {        for(int i=0;i<n;i++)        {            for(int j=0;j<=i;j++)            {                cin>>a[i][j];            }        }                for(int i=n-1;i>0;i--)        {            for(int j=n-1;j>0;j--)            {                a[i-1][j-1]=a[i-1][j-1]+mx(a[i][j-1],a[i][j]);            }        }                cout<<a[0][0];     }     return 0;}

提交时数组开小了。提示Runtime Error at Test 1

2.记忆化搜索

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[200][200],d[200][200],n;int ma(int a,int b){    if(a>b)        return a;    else        return b;}int dd(int i,int j){    if(d[i][j]>=0)        return d[i][j];    else if(n==i)        return d[i][j]=a[i][j];    else        return d[i][j]=a[i][j]+ma(dd(i+1,j),dd(i+1,j+1));}int main (){    while(~scanf("%d",&n))    {        memset(d,-1,sizeof(d));        for(int i=0;i<n;i++)        {            for(int j=0;j<=i;j++)            {                cin>>a[i][j];            }        }        cout<<dd(0,0);    }    return 0;}
方法不错



0 0
原创粉丝点击