栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【题解】方格取数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【题解】方格取数

题目描述:

                                 输入                                输出

样例数据1:            4 5 97                                24

样例数据2:            40 50 1                              47

搜索 !搜索!搜索!

重要的事情说三遍!

这题只要递归(循环也行,我懒得编了^_^),参数里再添一个累加器,边走边累加,走一步求最大,然后输出,这道题就做完了。

我从来不爱说废话,代码如下:

#include
using namespace std;
int n,m,s,f[105][105],lz;
const int a[4][2]={{0,-1},{0,1},{1,0},{-1,0}};   //四个方向的xy轴增减变化(不是按上下左右排的!)
void Dfs(int x,int y,int s){                      //搜索
	int x1,y1;
	lz=max(lz,s);                                 //求最大
	for(int i=0;i<4;i++){                         //上下左右四个方向枚举
		x1=x+a[i][0],y1=y+a[i][1];
		if(f[x1][y1]>f[x][y]) Dfs(x1,y1,s+f[x1][y1]);  //判断
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++){                        //初始化
		for(int j=1;j<=m;j++){
			s=s*345%19997;
			f[i][j]=s%10+1;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++) Dfs(i,j,f[i][j]);
	}
	cout< 

算法:DFS#

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298440.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号