CodeForces
来源:互联网 发布:沈阳拼车软件 编辑:程序博客网 时间:2024/06/05 02:04
CF传送门
题意:
1. 一张地图(二维数组建立的图)上存在墙(*)和空地(.)
2. 给你一颗炸弹,要求放在地图上的某一点可以炸毁所有墙,炸弹可以无视距离炸毁上下左右四个方向所有东西
3. 如果可以炸毁所有墙就输出YES并输出炸弹放置点,否则直接输出NO
题解:
1. 我原本是遍历整张图来计算,然后妥妥的超时
2. 打表,把每一行上的墙数量存到一个数组,再把每一列上的墙数量存到另一个数组
3. 遍历地图,把两个数组相加,再判断炸弹所在点的情况即可
4. 如果炸弹放置点是墙,则对应行列相加后要减1,否则不变
以下是我的AC代码:
//十字炸弹,按行列打表#include <cstdio>#include <cstring>#define maxn 1005using namespace std;char s[maxn][maxn]; //存储地图int r[maxn],l[maxn]; //存储行列炸弹数量int main(){ memset(r,0,sizeof(r)); memset(l,0,sizeof(l)); int n,m,sum=0; scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { getchar(); for(int j=1;j<=m;j++) { scanf("%c",&s[i][j]); if(s[i][j]=='*') { sum++; //计算总墙数量 r[i]++; //对应行墙数量+1 l[j]++; //对应列墙数量+1 } } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { int flag=r[i]+l[j]; if(s[i][j]=='*') //如果炸弹放置点是墙就墙数量减1 flag--; if(flag==sum) //如果刚好炸毁所有墙,就打印结果并结束程序 { printf("YES\n%d %d\n",i,j); return 0; } } } printf("NO\n"); return 0;}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 给jqGrid表格某一列值添加点击事件
- java学习(1) 第一个java小程序运行解释
- ACM一类方程问题的求解[最短路建模] bzoj2118
- hdu1505—City Game(1506的加强版)
- CSAPP 第一章 计算机系统漫游
- CodeForces
- 出现如下错误服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值。
- ActiveMQ
- Git下的标签
- Unity3D研究院之手游开发中所有特殊的文件夹
- 计算机存储计量单位bit,Byte,word
- 网络爬虫相关程序学习(包含jar包等)---各大网站网络爬虫
- Arduino 直流电机转速控制系统
- ==和equals的区别