不懂就问
查看原帖
不懂就问
316149
QIANXUN_楼主2020/5/5 23:51

我是看了题解才ac的;不知道为什么不能设左上两行的初始值为1,而必须设a[2][2]为1才可以

#include<bits/stdc++.h>
using namespace std;

long long int a[30][30]={0},b[30][30]={0};

int main(){
	int ex,ey,mx,my;
	cin>>ex>>ey>>mx>>my;
	ex+=2;
	ey+=2;
	mx+=2;
	my+=2;
	
	b[mx][my]=-1;
	b[mx-2][my-1]=-1;
	b[mx-1][my-2]=-1;
	b[mx-2][my+1]=-1;
	b[mx-1][my+2]=-1;
	b[mx+2][my-1]=-1;
	b[mx+1][my-2]=-1;
	b[mx+2][my+1]=-1;
	b[mx+1][my+2]=-1;
	
//	for(int i=2;i<=ex;i++){
//	    if(b[i][2]!=-1) a[i][2]=1;
//	}
//		
//	for(int i=2;i<=ey;i++){
//	    if(b[2][i]!=-1)	a[2][i]=1;
//	}
	a[2][2]=1;
	for(int i=2;i<=ex;i++){
		for(int j=2;j<=ey;j++){
			if(b[i][j]==-1)
			    a[i][j]=0;
			else
			    a[i][j]=max(a[i-1][j]+a[i][j-1],a[i][j]);
		}
	}
	cout<<a[ex][ey];
	return 0;
}
2020/5/5 23:51
加载中...