记录编号 169142 评测结果 AAAAAAAAA
题目名称 晴天小猪历险记 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.158 s
提交时间 2015-07-08 08:09:51 内存使用 7.99 MiB
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
using namespace std;
#define MAXN 1003
int n,a[MAXN][MAXN],f[MAXN][MAXN];
int MIN(int h,int hh,int hhh)
{
	if(h<hh&&h<hhh) return h;
	if(hh<h&&hh<hhh) return hh;
	return hhh;
}
int main()
{   freopen("hilllll.in","r",stdin);
	freopen("hilllll.out","w",stdout);
	cin>>n;
	memset(f,22,sizeof(f));
	for(int i=1;i<=n;++i)
	 for(int j=1;j<=i;++j)
	  scanf("%d",&a[i][j]);
	  f[n][1]=a[n][1];
	for(int i=n;i>=1;--i)
	 {
	    int flag=0;
	    for(int j=1;j<=i;++j)
	    {
	     if(j==1&&i!=1)
	     {
		    int te1=min(f[i][i],f[i+1][i+1]);
		    int te2=min(f[i][j-1],f[i][j+1]);
		    int te3=min(f[i+1][j],f[i+1][j+1]);
		    if(f[i][j]>min(min(te1,te2),te3)+a[i][j])
		     {
				f[i][j]=min(min(te1,te2),te3)+a[i][j];
				flag=1;
		     }
	     }
	     if(j==i)
	      {
		  int te1=min(f[i][1],f[i+1][1]);
          int te2=min(f[i][j-1],f[i][j+1]);
		  int te3=min(f[i+1][j],f[i+1][j+1]);
		  if(f[i][j]>min(min(te1,te2),te3)+a[i][j])
            {
				f[i][j]=min(min(te1,te2),te3)+a[i][j];
				flag=1;
            }
	      }
	     if(j!=1&&j!=i)
	       {
              int te2=min(f[i][j-1],f[i][j+1]);
		      int te3=min(f[i+1][j],f[i+1][j+1]);
		      if(f[i][j]>min(te2,te3)+a[i][j])
		       {
				  f[i][j]=min(te2,te3)+a[i][j];
				  flag=1;

		       }
	        }
	     }
	     if(flag==1)
		    i++;
	 }
	 printf("%d",f[1][1]);
	 return 0;
}