洛谷P1789MC生存插火把

洛谷P1789MC生存插火把

这道题有一个小坑,就是火把照亮的地方可能不在数组里,注意要把那一块地方去掉,这道题的出题者把范围都告诉我们了,大大滴降低了这道题的难度

下面是我的代码

c 复制代码
#include <stdio.h>

int n, m,k ;//一共有n*n个数
int a[100][100] = { 0 };//记录火把的位置
int all=0;
int main() {
	scanf("%d %d %d", &n, &m, &k);
	for (int i = 2; i <= (m + 1); i++) {
		int x, y;//用于存储火把的位置
		scanf("%d %d", &x, &y);
		a[x - 1][y - 1] = 2;//2表示放了火把
		for (int x1 = x - 3; x1 <= (x + 1); x1++) {//横着
            while(x1<0) x1++;
			if (a[x1][y-1] == 0) a[x1][y-1] = 1;//1代表被照亮
			//斜着
			if (x1 == (x - 2) && a[x1][y - 2] == 0)a[x1][y - 2] = 1;
			if (x1 == (x - 2) && a[x1][y] == 0)a[x1][y] = 1;
			if (x1 == x && a[x1][y - 2] == 0)a[x1][y - 2] = 1;
			if (x1 == x  && a[x1][y] == 0)a[x1][y] = 1;
		}
		for (int y1 = y - 3; y1 <= (y + 1); y1++) {//竖着
            while(y1<0) y1++;
			if (a[x - 1][y1] == 0) a[x - 1][y1] = 1;
		}
		

	}
	for (int i = m + 2; i <= m + k + 1; i++) {
		int o, p;//储存萤石的位置
		scanf("%d %d", &o, &p);
		a[o - 1][p - 1] = 3;//3表示放了萤石
		for (int o1 = o - 3; o1 <= (o + 1); o1++) {
            while(o1<0)o1++;
			for (int p1 = p - 3; p1 <= (p + 1); p1++) {
                while(p1<0)p1++;
				if (a[o1][p1] == 0) a[o1][p1] = 1;//表示被照亮了
			}
		}
	}
	for (int u = 0; u < n; u++) {
		for (int j = 0; j < n; j++) {
			if (a[j][u] == 0) all++;
		}
	}
	printf("%d", all);
}
相关推荐
峥嵘life17 分钟前
Android16 EDLA中GMS导入和更新
android·linux·学习
li星野32 分钟前
OpenCV4X学习—图像平滑、几何变换
图像处理·学习·计算机视觉
世人万千丶33 分钟前
鸿蒙跨端框架 Flutter 学习 Day 3:性能进阶——Iterable 延迟加载与计算流的智慧
学习·flutter·ui·华为·harmonyos·鸿蒙·鸿蒙系统
2401_858286111 小时前
从Redis 8.4.0源码看快速排序(1) 宏函数min和swapcode
c语言·数据库·redis·缓存·快速排序·宏函数
l1t1 小时前
利用豆包辅助编写数独隐式唯一数填充c程序
c语言·开发语言·人工智能·算法·豆包·deepseek
星火开发设计2 小时前
变量与常量:C++ 中 const 关键字的正确使用姿势
开发语言·c++·学习·const·知识
qiuiuiu4132 小时前
正点原子RK3568学习日志21-实验1-字符设备点亮led
linux·学习
世人万千丶2 小时前
鸿蒙跨端框架 Flutter 学习 Day 3:综合实践——多维数据流与实时交互实验室
学习·flutter·华为·交互·harmonyos·鸿蒙
世人万千丶2 小时前
鸿蒙跨端框架 Flutter 学习 Day 3:工程实践——数据模型化:从黑盒 Map 走向强类型 Class
学习·flutter·ui·华为·harmonyos·鸿蒙·鸿蒙系统
Darkershadow2 小时前
蓝牙学习之Provision(7)bind (1)
学习·蓝牙·ble·mesh