博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[USACO08NOV]守护农场Guarding the Farm
阅读量:4560 次
发布时间:2019-06-08

本文共 1231 字,大约阅读时间需要 4 分钟。

首先我要提醒各位:数组开打点,不然你会永远73分(鄙视出数据的人),本题用DFS就可以了,去枚举每一种的方向,判断是否低于它,然后就没有然后了,

代码:

#include
using namespace std;struct str{ int h,z,g;//定义结构体,懒 }b[10000001];int a[1100][1100],k;bool cmp(str x,str y){ return x.g>y.g;//判断是否低于他 }int ans=0,sum=0;int n,m;void dfs(int x,int y)//去找 {// if(x+1>n&&x-1<1&&y+1>m&&y-1<1) return ; sum++; int ji_lu=a[x][y];//记录一下 a[x][y]=9999999;//标记是否找过了 //八个方向 if(ji_lu>=a[x+1][y]) dfs(x+1,y); if(ji_lu>=a[x-1][y]) dfs(x-1,y); if(ji_lu>=a[x][y-1]) dfs(x,y-1); if(ji_lu>=a[x][y+1]) dfs(x,y+1); if(ji_lu>=a[x+1][y-1]) dfs(x+1,y-1); if(ji_lu>=a[x+1][y+1]) dfs(x+1,y+1); if(ji_lu>=a[x-1][y-1]) dfs(x-1,y-1); if(ji_lu>=a[x-1][y+1]) dfs(x-1,y+1);}int main(){ cin>>n>>m; for(int i=0;i<=m+1;i++)//防止越界 { a[0][i]=9999999; a[n+1][i]=9999999; } for(int i=0;i<=n+1;i++)//防止越界 { a[i][0]=9999999; a[i][m+1]=9999999; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { k++; cin>>a[i][j]; b[k].g=a[i][j];//记录 b[k].h=i; b[k].z=j; } } sort(b+1,b+1+n*m,cmp);//排序 k=0; while(sum

  

转载于:https://www.cnblogs.com/dai-jia-ye/p/9347696.html

你可能感兴趣的文章
发布功能完成。
查看>>
跟着Alex老师学习抄了一遍shopping_list的购物程序
查看>>
Storm Topology 提交 总结---Kettle On Storm 实现
查看>>
自定义栈的实现及使用两个栈模拟队列
查看>>
.NET EntityFrameworkCore.DbUpdateException 错误
查看>>
【转】LINUX 5 常用ftp telnet配置
查看>>
[Leetcode] Same Tree
查看>>
UVa 1252 - Twenty Questions(状压DP)
查看>>
Elevatorhdu-1008
查看>>
采用ADO.NET存取Excel数据(Use ADO.NET to Retrieve and Modify Records in an Excel Workbook)
查看>>
Shared Source Common Language Infrastructure 2.0 Release!
查看>>
使用PHP获取用户客户端真实IP的解决方案
查看>>
jQuery实现页内查找相关内容
查看>>
ol3开发离线地图
查看>>
[BZOJ2160]拉拉队排练
查看>>
三、css 和 js 的装载与执行
查看>>
ES之值类型以及堆和栈
查看>>
Web 3.0移动大时代,谁才是赢家?
查看>>
安装tomcat出现的问题
查看>>
linux环境下apache2与tomcat6的负载配置
查看>>