hdoj 1045 Fire Net 直接枚举 模拟就好了
题目链接
直接枚举所有结果就可以了,
就是第一次模拟这样的数据 每个位置若没有阻挡物,存在着两种状态,一是有堡垒,二是空地。直接枚举就可以了。
自己的代码写的很繁琐,但是 首次想到了 将if(y>=n){x++,y=0}通过这项关键函数,就可以有序的枚举 从左往右 然后判断是否成立,若成立重新扫描一遍,得到堡垒是否最多。
自己第一次写的枚举代码 很是繁琐。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
using namespace std;
char a[10][10];
char b[10][10];
int sum=0,n;
int MAX;
int judge(){int flag=1;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(b[i][j]=='O'){int k=j;while(++k<n){if(b[i][k]=='.')continue;if(b[i][k]=='O'){flag=0;goto end; } if(b[i][k]=='X')break; } } } }for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(b[j][i]=='O'){int k=j;while(++k<n){if(b[k][i]=='.')continue;if(b[k][i]=='O'){flag=0;goto end; } if(b[k][i]=='X')break; } } } }end:;if(flag==1){int sum=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++)if(b[i][j]=='O')sum++; } return sum; }else return -1;}void fun(int x,int y,char tmp){if(y>=n){x++;y=0;}if(a[x][y]=='X')b[x][y]='X';else {b[x][y]=tmp; } if( (x==n-1)&&(y==n-1)){// for(int i=0;i<n;i++)// printf("%s\n",b)int sum=judge();if(MAX<sum){MAX=sum;} return ; } fun(x,y+1,'O');fun(x,y+1,'.');
}int main()
{while(scanf("%d",&n)!=EOF){if(n==0)break;for(int i=0;i<n;i++)scanf("%s",a[i]);//O .MAX=-1;if(a[0][0]!='X'){fun(0,0,'O');fun(0,0,'.');}else {fun(0,0,'O'); } printf("%d\n",MAX); }return 0;
}
hdoj 1045 Fire Net 直接枚举 模拟就好了相关推荐
- 第四章:枚举 模拟 排序习题 【完结】
基本熟练掌握. 目录 1210. 连号区间数 [枚举 ] 1236. 递增三元组 [枚举 / 前缀和 / hush定址法] 1245. 特别数的和 [简单] 1204. 错误票据 [简单] 466. ...
- 【上海交大oj】畅畅的牙签袋(改)(枚举+模拟)
1391. 畅畅的牙签袋(改) 题目描述 上次妄图遮掩显示器的企图失败了,所以畅畅很不开心.这次,他换了一种牙签袋卷土重来了.这次他选择了十字形的牙签袋(即每贴一个牙签袋都会影响5块区域,贴的时候中心 ...
- 暑假集训第一天 枚举+模拟+前缀和+差分
2021-07-07上课总结 一.枚举 枚举,就是通过循环.数组等方式进行暴力查找寻找答案.这种方法很容易找到正解,但是时间复杂度会是O(n)以上,要考虑数据范围. 经典例题 [AtCoder ABC ...
- HDU-3717:Rescue(二分枚举+模拟)
题目链接:点击打开链接 题目大意: 有一些石块,你可以站在一个石块的右边向左边发射魔法球,对每个石块造成的伤害为当前魔法球的能量-(发射魔法球的位置-当前石块下标 i)的平方,具体看题目,下面说一下题 ...
- poj 1950 Dessert(dfs枚举,模拟运算过程)
/* 这个代码运行的时间长主要是因为每次枚举之后都要重新计算一下和的值! 如果要快的话,应该在dfs,也就是枚举的过程中计算出前边的数值(这种方法见第二个代码),直到最后,这样不必每一次枚举都要从头再 ...
- Codeforces B. Dubious Cyrpto (枚举 / 模拟) (Round #657 Div.2)
传送门 题意: 已知存在三个数a,b,c满足l <= a,b,c <= r,且m = n * a + b - c.现在告诉你l,r和m的值,需要你找到一组可行的a,b,c. 思路: 枚举a ...
- AcWing 478. 侦探推理 枚举+模拟
AcWing 478. 侦探推理 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏. 游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯( ...
- hdu 杭电 1045 Fire Net
题意:地图中最多能放多少炮台. 解法:深搜. ac代码: View Code #include<iostream> using namespace std;char map[8][8]; ...
- hdu 1045 Fire Net
经典建模. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...
最新文章
- 解决opencv错误AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘
- 【MPI编程】MPI_Bcast广播讲解和使用
- python 测试用例
- 《R语言数据分析》——3.2 聚集
- 数学--图论--莫比乌斯线性筛模板
- Spring入门5.事务管理机制
- P3159-[CQOI2012]交换棋子【费用流】
- 机器学习实战(MachineLearinginAction) 第三章 决策树
- 《Spring微服务实战》读书笔记——通过配置服务器来管理配置
- 【PHP面向对象(OOP)编程入门教程】20.PHP5接口技术(interface)
- vbe编程真人小代码
- python实现拖动画笔画图_Python下使用Trackbar实现绘图板
- vulnhub靶机-Pwned
- 無間道III 終極無間
- LoRaWAN入网方式以及加密进阶版
- [openstack swift]0 swift介绍
- 2021年第四届“传智杯“大学B组
- 虾皮电商选品时必须注意哪些是违禁品
- 华硕服务器设置固态盘启动不了系统盘,华硕uefi引导启动不了系统安装系统安装...
- 解析MYSQL BINLOG二进制格式(10)--问题解答
热门文章
- 动软生成代码中的DBhelperSQL.ExecuteSql()
- Rxjava 总结的比较
- 移动通信数字移动电话客户号码结构
- 原生JavaScript实现登录注册前端验证
- Hi3531DV200 Hi3535AV100 Hi3559AV100 Hi3519AV100性能比对选型参考
- 彩色图像通道分离+融合
- JSP01-jsp简介和jsp三种脚本(表达式脚本、代码脚本、声明脚本)
- Windows PC、 Linux、 Android、 iOS多平台支持H5无插件播放RTSP摄像机解决方案
- Java中的LT、LE、EQ、NE、GE、GT分别代表含义
- 浏览器的标准模式与怪异模式