回炉-熄灯问题

进来突然意识到算法的重要性,可惜已经没有充足的时间去进行专业的训练了,只能慢慢挤时间做几个题练习一下聊以安慰,希望能多坚持几天吧,奉劝各位想学算法的同学一定要趁早啊。
poj1222
解析见郭炜老师的程序设计与算法(二)算法基础
熄灯问题
代码如下

#include <iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
char oriLights[5];
char Light[5];
char result[5];
int GetBit(char c ,int i)
{return (c>>i)&1;
}
void SetBit(char &c,int i,int v)
{if(v){c |=(1<<i);}elsec &= ~(1<<i);
}void FlipBit(char & c ,int i)
{c^=(1<<i);
}void OutputResult(int t,char result[])
{cout<<"PUZZLE #"<<t<<endl;for(int i=0;i<5;i++){for(int j=0;j<6;j++){cout<<GetBit(result[i],j);if(j<5)cout<<" ";}cout<<endl;}
}int main()
{int T;cin>>T;for(int t=0;t<T;t++){for(int i=0;i<5;i++)for(int j=0;j<6;j++){int s;cin>>s;SetBit(oriLights[i],j,s);}for(int n=0;n<64;n++){int switchs = n;memcpy(Light,oriLights,sizeof(oriLights));for(int i = 0;i<5;i++){result[i] = switchs;for(int j=0;j<6;j++){if(GetBit(switchs,j)){if(j>0)FlipBit(Light[i],j-1);FlipBit(Light[i],j);if(j<5)FlipBit(Light[i],j+1);}}if(i<4)Light[i+1] ^=switchs;switchs = Light[i];}if(Light[4] == 0){OutputResult(t,result);break;}}}return 0;
}

主要思想为枚举思想,灵活的运用了位运算,可以说非常精炼,希望日后我的算法能力也能到如此水平 Fighting ^-^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ngrx初识

ngrx初识 在使用之前需要安装ngrx npm install @ngrx/store --save 或者 yarn add @ngrx/store ngrx/store:保存了ReduxAPI的核心概念,使用RxJS扩展的Redux实现。使用可观察对象来简化了监听事件的订阅等操作。 dispatch&reducer&state dispatcher,reducer,state…

回炉-特殊密码锁

题目&#xff1a;特殊密码锁 001:特殊密码锁 描述 有一种特殊的二进制密码锁&#xff0c;由n个相连的按钮组成&#xff08;n<30&#xff09;&#xff0c;按钮有凹/凸两种状态&#xff0c;用手按按钮会改变其状态。 然而让人头疼的是&#xff0c;当你按一个按钮时&#x…

Angular的NgModule

Angular的NgModule NgModule作为Angular模块的核心,也是组织者,官方有很长的文档来介绍他,包括每一个API。 @NgModule文件的定义方式 import { BrowserModule } from @angular/platform-browser; import { NgModule } from @angular/core;import { AppComponent } from ./ap…

回炉-拨钟问题

题目&#xff1a;拨钟问题 1166:拨钟问题 描述 有9个时钟&#xff0c;排成一个3*3的矩阵。 |-------| |-------| |-------| | | | | | | | |---O | |---O | | O | | | | | | | |-------| |-------| …

Ubuntu扩展触摸屏触控错位修复

Ubuntu扩展触摸屏触控错位修复 当我们ubuntu外接一个触摸显示器的时候&#xff0c;会发现触摸扩展屏幕&#xff0c;发现操控的是主屏幕&#xff0c;我写了一个脚本去修复。 #! /bin/bash #------------------------------------------------------------------------------ #…

目标检测与分割总结

目标检测最常用的三个模型&#xff1a;Faster R-CNN、SSD和YOLO Faster R-CNN架构 在Faster RCNN中&#xff0c;候选框是经过RPN产生的&#xff0c;然后再把各个“候选框”映射到特征图上&#xff0c;得到RoIs。 Faster R-CNN步骤&#xff1a; (1) 由输入图片产生的区域候选…

shell脚本单词去重多个文件

shell脚本单词去重多个文件 例如要求如下&#xff1a; 有多个txt文件&#xff0c;每个文件内有多行单词 中间为英文的”,”&#xff0c;或者中文的”&#xff0c;”逗号作为分隔符。 world,世界 set&#xff0c;设置 good,好&#xff0c;商品 .... 将这些文件汇总去除重复…

win10连接烟台大学校园网

第一步 右键网络图标&#xff0c;打开网络管理中心 第二步&#xff1a; 设置添加新的网络&#xff0c;方法步骤如下&#xff1a; 第三步&#xff1a;新建VPN连接&#xff0c;注意协议为L2TP 第四步&#xff1a; 第五步&#xff1a; 第六步&#xff1a; 创建结束后进入更…

Angular国际化方案

Angular国际化方案 首先和大家推荐一个xlf文件的操作工具,支持合并和编辑功能,github,到release界面下载。 对于Angular国际化,官方提供了i18n方案,也就是标签的方式,通过angular CLI来识别。国际化方案必须在编译前定义下来,所以不能动态翻译。也就是当有人切换语言时,…

模拟退火算法(TSP问题)

模拟退火算法解决TSP问题 算法思想 模拟退火算法&#xff08;Simulate Anneal&#xff0c;SA&#xff09;是一种通用概率演算法&#xff0c;用来在一个大的搜寻空间内找寻命题的最优解 模拟退火算法来源于固体退火原理&#xff0c;将固体加温至充分高&#xff0c;再让其徐徐…

2-docker 安装

2-docker 安装 Ubuntu 安装 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此&#xff0c;我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。 $ sudo apt-get update$ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \sof…

U-Net++粗略解释

Paper&#xff1a;UNet: A Nested U-Net Architecture for Medical Image Segmentation u-net网络的基本拓扑结构 目前最先进的图像分割模型是各种个同样的 encoder-decoder架构&#xff0c;他们具有一个关键的相似性&#xff1a;skip connections&#xff0c;它可以将编码器…

Spring中的组合模式

组合模式是一种对象设计模式&#xff0c;它允许你将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;使得客户端以统一的方式处理单个对象和对象的组合。在Spring框架中&#xff0c;组合模式被广泛应用&#xff0c;让我们深入分析一下。 在Spring中&#xff0c;组…

Docker+Nginx部署Angular

DockerNginx部署Angular 在部署Angular生产环境之前&#xff0c;需要电脑已经安装docker。 添加Dockerfile 在已经完成的Angular项目的项目根目录下添加Dockerfile文件。 Dockerfile文件内容&#xff1a; FROM nginx:1.11-1.11-alpine COPY index.html /usr/share/nginx/ht…

U-net网络详解

U-net网络 简单说一下网络图中各项所代表的内容&#xff1a; 蓝/白色框表示feature map(特征图) 蓝色箭头表示3x3卷积&#xff0c;主要用于特征提取 灰色箭头表示skip-connection&#xff08;跳跃连接&#xff0c;通常用于残差网络中&#xff09;,在这里是用于用于特征融合&…

Angular Web App部署Ubuntu Nginx

Angular Web App部署Ubuntu Nginx 当我们想发布Angular Web App的时候,我们想在开发的时候部署测试,那么这篇文章使用Nginx来部署我们的Angular 系统环境 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.4 LTS Rele…

遗传算法-01背包

遗传算法 算法思想 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型&#xff0c;是一种通过模拟自然进化过程搜索最优解的方法。 其主要特点是直接对结构对象进行操作&#xff0c;不存在求导和函…

Angular Web App部署Linux Nginx Https

Angular Web App部署Linux Nginx Https 提示:这篇文章是基于内网的 互联网就开始将 WEB 服务从 HTTP 迁移到 HTTPS,而现在为了更快的推进 HTTPS 的普及,Chrome 将从 2018 年 7 月起标记所有的 HTTP 网站为不安全链接。 HTTPS 会逐渐成为 WEB 服务的标配,最最重要的是,它能…

SOLO算法简读

论文链接&#xff1a;https://arxiv.org/abs/1912.04488 代码链接&#xff1a;https://github.com/WXinlong/SOLO 摘要 提出一种新的实例分割方法。与语义分割等其他密集预测任务相比&#xff0c;实例分割的难度要大得多。为了预测每个实例的掩码&#xff0c;主流方法要么遵…

Rxjs的flatMap使用

Rxjs的flatMap使用 flatMap是Rxjs比较绕的一个概念&#xff0c;这里我们只是讲解如何使用。在Rxjs 4.0版本时叫flatMap,在Rxjs 5.0时被更名为margeMap,现在flatMap作为margeMap的别名使用&#xff0c;这是考虑向下兼容。 官方flatMap的定义&#xff1a; Projects each sourc…