题解 | #金币馅饼#

金币馅饼

https://ac.nowcoder.com/acm/problem/25147

这么多人写DP,那我写一个记忆化搜索的,刚开始跑的时候忘记加限制条件,注意有些地方是跑不到的

using namespace std;
#define INF 1000000
int n,m;
int mp[110][110],dp[110][110],mp1[110][110];
int dx[3]={-1,0,1};
int dy[3]={1,1,1};

bool judge(int x,int y){
	if(x<1||x>n||y<1||y>m) return false;
	else return true;
}

int dfs(int x,int y){
	//cout<<x<<" "<<y<<endl;
	if(x==n&&y==m){
		//cout<<n<<" "<<m<<endl;
		return mp[x][y];
	}else if(x!=n&&y==m){
		return 0;
	}
	if(dp[x][y]!=0){
		return dp[x][y];
	}
	int ans=mp[x][y];
	for(int i=0;i<3;++i){
		int xx=x+dx[i];
		int yy=y+dy[i];
		//cout<<x<<" "<<y<<" "<<ans<<endl;
		if(judge(xx,yy)&&(m-yy)>=(n-xx)){//注意限制条件
			ans=max(ans,dfs(xx,yy)+mp[x][y]);
		}
	}
	dp[x][y]=ans;
	//cout<<x<<" "<<y<<" "<<ans<<endl;
	return dp[x][y];
}

int main(){
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			cin>>mp[i][j];
		}
	}
	memset(dp,0,sizeof(dp));
	dfs(1,1);
	cout<<dp[1][1]<<endl;
}
全部评论

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务