PTA 2813:画家问题 (熄灯问题)

news/2025/1/15 8:00:00/

PTA 2813:画家问题 (熄灯问题)

经典的熄灯问题,思路就不过多阐述,csdn都有

#include <bits/stdc++.h>
using namespace std;
int num[20];
int num2[20];
int main() {int n;cin >> n;for (int i = 1; i <= n; i++) {string str;cin >> str;for (int j = 0; j < n; j++) {// 如果是开灯状态,标记上1,反之0num[i] |= str[j] == 'w' ? 1 << j : 0;}// 存原图num2[i] = num[i];}// 结果可不可行bool flag = false;// 最小操作次数int ans = -1;// 2 ==> 00, 01, 10, 11,// 2  0 1 2 3// 0 ~ 2^2 - 1 (1 << 2) -1// 枚举N个格子的状态for (int k = 0; k < (1 << n); k++) {// 第0层的状态为枚举的Knum[0] = k;// 这次枚举的开关灯次数int cnt = 0;// 还原图,因为上次实在num上修改的,所以要还原for (int i = 1; i <= n; i++) {num[i] = num2[i];}// 修改灯的状态for (int i = 1; i <= n; i++) {for (int j = 0; j < n; j++) {// 01 & 10 == 00 == 0// 如果上一层的第j个灯是开的,则这一层需要关闭if (num[i - 1] & (1 << j)) {// 次数++cnt++;// 修改当前灯的状态num[i] ^= (1 << j);// 左边灯的状态if (j > 0) num[i] ^= (1 << (j - 1));// 右边灯的状态if (j < n - 1) num[i] ^= (1 << (j + 1));// 下一层第j个灯的状态num[i + 1] ^= (1 << j);// 上一层第j个灯不用修改,因为最后我们只需要判断最后一层灯的状态}}}// 如果最后一层灯都关闭了,则二进制上都是0,所以结果为0if (num[n] == 0) {flag = true;// 更新答案if (ans == -1 || ans > cnt) ans = cnt;}}if(!flag) cout << "inf" << endl;else cout << ans << endl;return 0;
}

http://www.ppmy.cn/news/1413431.html

相关文章

Pointnet++改进即插即用系列:全网首发RCSOSA重参数化卷积架构 |即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入RCSOSA,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三

vue 和 react 的区别

不同点 vue vue 把 html、css、js写到一个文件中&#xff0c;逻辑更加清楚vue 使用了模版系统&#xff0c;提供了模版引擎处理响应式&#xff0c;数据的双向绑定&#xff0c;但是也是单向数据流更易于上手 react 使用 jsx 语法&#xff0c;允许我们在 js 中书协 html 代码…

VSCode配置settings.json

快捷键 ctrl, 打开设置&#xff0c;右上角运行箭头的右边的那个图标&#xff0c;鼠标放到上面可以看到 “打开设置(json)” 点击它就能打开settings.json配置文件 常用的配置选项 "files.autoSave": "onWindowChange",// 当窗口失去焦点时&#xff0c;会…

python如何判断点是否在旋转矩形内部矢量

1. 简介 在计算机图形学和计算几何中&#xff0c;经常会遇到判断一个点是否在一个旋转矩形内部的问题。本项目方案旨在使用Python提供一种高效准确的算法来解决这个问题。 2. 算法原理 方法一&#xff1a; 为了判断一个点是否在一个旋转矩形内部&#xff0c;我们可以将问题…

GlusterFS分布式存储

目录 前言 一、GlusterFS分布式存储概述 1、GFS概念 2、GFS特点 3、GFS术语 4、GFS构成 5、GFS工作流程 6、后端存储如何定位文件 7、GlusterFs的卷类型 7.1 Distributed Volume&#xff08;分布式卷&#xff09; 7.2 Striped Volume&#xff08;条带卷&#xff09…

Python程序设计 列表

教学案例八 列表 1. 计算并显示斐波那契数列 输入n,计算并显示斐波那契数列前n项.一行打印5项&#xff0c;每项显示宽度为6 什么是斐波那契数列 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff…

人工智能分类算法概述

文章目录 人工智能主要分类算法决策树随机森林逻辑回归K-均值 总结 人工智能主要分类算法 人工智能分类算法是用于将数据划分为不同类别的算法。这些算法通过学习数据的特征和模式&#xff0c;将输入数据映射到相应的类别。分类算法在人工智能中具有广泛的应用&#xff0c;如图…

书生·浦语大模型第二期实战营第二课笔记和基础作业

来源&#xff1a; 作业要求:Homework - Demo 文档教程:轻松玩转书生浦语大模型趣味 Demo B站教程:轻松玩转书生浦语大模型趣味 Demo 1. 笔记 2.基础作业 2.1 作业要求 2.2 算力平台 2.3 新建demo目录&#xff0c;以及新建目录下的文件&#xff0c;下载模型参数 2.4 Intern…