在(2N-1)个单位时间内走完N*N路径,是不是只能向下和向右走?(不然就超过时间了)
我的理解是不是错的? 求大佬指点
0分代码QWQ
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int a[1000][1000];
int f[1000][1000];
int main()
{
int n,maxn;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
int next,z,t;
int i=1,j=1;
f[i][j]=1;
while(1)
{
if(i==n&&j==n||i>n&&j>n){break;}
if(i+1>n&&j+1<=n){f[i][j+1]=f[i][j]+a[i][j+1];j++;continue;}
else
if(i+1<=n&&j+1>n){f[i+1][j]=f[i][j]+a[i+1][j];i++;continue;}
else
if(min(a[i+1][j],a[i][j+1])==a[i+1][j]){f[i+1][j]=f[i][j]+a[i+1][j];i++;}
else {f[i][j+1]=f[i][j]+a[i][j+1];j++;}
}
cout<<f[n][n];
return 0;
}