回爐-特殊密碼鎖

題目:特殊密碼鎖

001:特殊密碼鎖

描述

有一種特殊的二進制密碼鎖,由n個相連的按鈕組成(n<30),按鈕有凹/凸兩種狀態,用手按按鈕會改變其狀態。

然而讓人頭疼的是,當你按一個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的一個按鈕。

當前密碼鎖狀態已知,需要解決的問題是,你至少需要按多少次按鈕,才能將密碼鎖轉變為所期望的目標狀態。

輸入

兩行,給出兩個由0、1組成的等長字符串,表示當前/目標密碼鎖狀態,其中0代表凹,1代表凸。
輸出
至少需要進行的按按鈕操作次數,如果無法實現轉變,則輸出impossible。

樣例輸入

011
000

樣例輸出

1

解題思路:首先我們能想到的是在確保x[i]之前的數據與y[i]相同的情況下,我們可以通過改變x[i+1]來使x[i]與y[i]保持相同,最后通過比較最后一位是否相同或者比較x與y是否相同來判斷兩者最終的結果。這里需要注意的是x[0]的狀態,x[0]的狀態有兩種方法來改變,一是通過改變x[1]來使x[0]改變,二是通過改變x[0]自身來改變,這里我們要分開討論,取兩種情況下的最小值作為最后的結果。

代碼:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <math.h>
#include<algorithm>
using namespace std;
char a[32],b[32],c[32];
int count1=0,count2=0,a1=1e10,a2=1e10;
int len;
void switchs(int i)
{a[i-1]=a[i-1]=='1'?'0':'1';a[i]=a[i]=='1'?'0':'1';if(i<len-1)a[i+1]=a[i+1]=='1'?'0':'1';
}
int compare(int n)
{int an=0;for(int i=1;i<n;i++){if(a[i-1]!=b[i-1]){switchs(i);an++;}}return an;
}
int main()
{while(cin>>c>>b){len = strlen(c);int sign = 0;strcpy(a,c);count1=compare(len);if(!strcmp(a,b)){a1=count1;sign=1;}strcpy(a,c);a[0]=a[0]=='1'?'0':'1';a[1]=a[1]=='1'?'0':'1';count2=compare(len)+1;if(!strcmp(a,b)){a2=count2;sign=1;}if(sign)cout<<min(a1,a2)<<endl;else cout<<"impossible"<<endl;}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536121.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536121.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536121.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

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…

關于Loss的簡單總結

Dice Loss 參考&#xff1a;https://blog.csdn.net/l7H9JA4/article/details/108162188 Dice系數&#xff1a; 是一種集合相似度度量函數&#xff0c;通常用于計算兩個樣本的相似度&#xff0c;取值范圍為[0,1]。 s2∣X∩Y∣∣X∣∣Y∣s \frac{2|X ∩ Y|}{|X||Y|} s∣X∣∣Y…

Angular_PWA使用+Demo

Angular_PWA使用+Demo 什么是PWA PWA(Progressive Web App)利用TLS,webapp manifests和service workers使應用程序能夠安裝并離線使用。 換句話說,PWA就像手機上的原生應用程序,但它是使用諸如HTML5,JavaScript和CSS3之類的網絡技術構建的。 如果構建正確,PWA與原生應…