藍橋杯 4. 卡片換位

卡片換位

原題目鏈接

題目描述

你玩過華容道的游戲嗎?

這是一個類似的,但更簡單的游戲。

看下面的 3 × 2 格子:

+---+---+---+
| A | * | * |
+---+---+---+
| B |   | * |
+---+---+---+

在其中放置了 5 張牌,其中:

  • A 表示關羽,
  • B 表示張飛,
  • * 表示士兵,
  • 空格表示空位。

你可以將一張牌移動到相鄰的空格中(對角線不算相鄰)。

游戲目標是:讓關羽和張飛交換位置,其他牌的位置可以隨意。


輸入描述

輸入兩行,每行包含 3 個字符,表示當前局面。

字符說明:

  • A:關羽
  • B:張飛
  • *:士兵
  • (空格):空位

輸出描述

輸出一個整數,表示最少多少步可以完成關羽與張飛的位置交換。


輸入輸出樣例

示例

輸入

* A
**B

輸出

17

(注:要求最少移動步數達成目標,其他牌隨意。)

c++代碼

#include<bits/stdc++.h>using namespace std;string a, b;
int l_A, l_B;
unordered_set<string> mp;class solution{
public:int k, l_A, l_B;long long ans;solution() { this->ans = 0; }
};long long bfs() {vector<vector<int>> arr = { {1, 3}, {0, 2, 4}, {1, 5}, {0, 4}, {3, 5, 1}, {4, 2} };string c = a + b;solution s, mid;for (int i = 0; i < 6; i++) {if (c[i] == ' ') s.k = i;else if (c[i] == 'A') l_A = i, s.l_A = i;else if (c[i] == 'B') l_B = i, s.l_B = i;}queue<solution> qu;qu.push(s);while(!qu.empty()) {s = qu.front(), qu.pop();string temp = to_string(s.k) + " " + to_string(s.l_A) + " " + to_string(s.l_B);if (mp.find(temp) != mp.end()) continue;mp.insert(temp);if (s.l_A == l_B && s.l_B == l_A) return s.ans;for (int x : arr[s.k]) {mid = s;mid.k = x, mid.ans++;if (mid.l_A == x) mid.l_A = s.k;if (mid.l_B == x) mid.l_B = s.k;qu.push(mid);}}return -1;
}int main() {getline(cin, a);getline(cin, b);cout << bfs();return 0;
}//by wqs

題目解析

純純暴力BFS題目

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

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

相關文章

7.Excel:單元格格式

一 案例 1.案例1 2.案例2 3.案例3 二 三種基本數據類型 補充&#xff1a;在沒有任何格式的情況下是這樣對齊的。 1.文本 默認左對齊&#xff0c;文本不可參與計算。 2.數值 默認右對齊&#xff0c;數值計算精度是15位。 若超出15位&#xff0c;超出部分顯示為0。 3.邏輯值 …

高效DCDC電源芯片在運動控制器中的應用:設計考量、性能評估與可靠性分析

摘要 隨著工業自動化的深入推進&#xff0c;運動控制器作為自動化系統的核心組件&#xff0c;對電源芯片的性能提出了極高要求。高效率DCDC電源芯片憑借其卓越的電能轉換效率、優異的負載響應特性和高功率密度&#xff0c;在運動控制器領域得以廣泛應用。本文以國科安芯的ASP3…

Action:Update your application‘s configuration

在使用Maven項目時&#xff0c;有一個報錯信息是&#xff1a;Update your applications configuration 這類問題&#xff0c;就是我們的application.yml文件 或者 application.properties文件 內容哪里寫錯了 最有可能就是對齊方式有問題

Pycharm(六):可變與不可變類型

一、引用 在java中既有值傳遞,也有引用傳遞,我們思考一下在python中值的傳遞方式是哪種類型呢? 答案是引用傳遞。 概述: Python中存儲變量是需要占用內存空間的,為了更好地管理這些空間,每塊空間都是有自己的地址值的。 格式: id(變量名/值) 可以查看變量/…

動態ip與靜態ip的概念、區別、應用場景

動態ip與靜態ip的區別 前言 一、IP地址的概念和作用 1.1、IP地址的定義 1.2、IP地址的作用 二、動態IP和靜態IP的區別 2.1、動態IP和靜態IP的定義 2.2、動態IP和靜態IP的特點 2.3、動態IP和靜態IP的優缺點比較 三、動態IP和靜態IP的應用場景 3.1. 動態IP的應用場景 3.2. 靜態IP…

六個能夠白嫖學習資料的網站

一、咖喱君的資源庫 地址&#xff1a;https://flowus.cn/galijun/share/de0f6d2f-df17-4075-86ed-ebead0394a77 這是一個學習資料/學習網站分享平臺&#xff0c;包含了英語、法語、德語、韓語、日語、泰語等幾十種外國語言的學習資料及平臺&#xff0c;這個網站的優勢就是外語…

[貪心_7] 最優除法 | 跳躍游戲 II | 加油站

目錄 1.最優除法 題解 2.跳躍游戲 II 題解 3.加油站 題解 利用 單調性&#xff0c;可以實現 區間跳躍 1.最優除法 鏈接&#xff1a; 553. 最優除法 給定一正整數數組 nums&#xff0c;nums 中的相鄰整數將進行浮點除法。 例如&#xff0c;nums [2,3,4]&#xff0c;我…

“Daz to Unreal”將 G8 角色(包括表情)從 daz3d 導入到 UE5。在 UE5 中,我發現使用某個表情并與閉眼混合后,上眼瞼出現了問題

1) Bake & Export Corrective Morphs from Daz before you go into UE5 1) 在進入 UE5 之前&#xff0c;從 Daz 烘焙并導出修正型變形 In Daz Studio 在 Daz Studio 中 Load your G8 head, dial in the exact mix (e.g. Smile 1.0 Eyes Closed 1.0). 加載你的 G8 頭部&am…

【機器學習速記】面試重點/期末考試

自用,有錯誤歡迎評論區指出 目錄 一、機器學習基礎概念 二、機器學習類型分類 三、經典算法與原理 1. 線性模型 2. 決策樹 3. SVM(支持向量機) 4. K近鄰(KNN) 5. 貝葉斯分類 6. 集成學習 四、模型評價指標 五、模型泛化能力與調參 六、特征工程與數據預處理 七、維…

Redis 原子操作

文章目錄 前言? 一、什么是「原子操作」&#xff1f;&#x1f50d; 二、怎么判斷一個操作是否原子&#xff1f;&#x1f9ea; 三、項目中的原子 vs 非原子案例&#xff08;秒殺系統&#xff09;? 原子性&#xff08;OK&#xff09;? 非原子性&#xff08;高風險&#xff09;…

中建海龍MiC模塊化建筑賦能“好房子”新范式

中國建筑國際集團旗下中建海龍科技有限公司&#xff08;以下簡稱“中建海龍”&#xff09;以科技創新為引擎&#xff0c;持續推動建筑行業向工業化、數字化、綠色化轉型升級。近期&#xff0c;其自主研發的模塊化集成建筑&#xff08;MiC&#xff09;技術成功入選中國建筑首批產…

DDL自聯表

自聯表 create table t_menu (id int AUTO_INCREMENT,name varchar(20),image varchar(20),url varchar(20),pid varchar(20),constraint pk_id primary key(id),constraint fk_id foreign key(pid) references t_menu(id) );

【版本控制】SVN + TortoiseSVN版本管理實用教程(附安裝+開發常用操作)

摘要&#xff1a; 本文將帶你從零開始掌握 SVN 版本控制系統&#xff0c;結合 TortoiseSVN 圖形客戶端工具&#xff0c;深入學習包括安裝、檢出、提交、更新、回滾、沖突解決等常用開發操作&#xff0c;快速上手團隊協作&#xff01; &#x1f9e9; 什么是 SVN&#xff1f; SV…

C語言實現對哈希表的操作:創建哈希表與擴容哈希表

一. 簡介 前面文章簡單了解了哈希表 這種數據結構&#xff0c;文章如下&#xff1a; 什么是哈希表-CSDN博客 本文來學習一下哈希表&#xff0c;具體學習一下C語言實現對哈希表的簡單實現。 二. C語言實現對哈希表的操作 1. 哈希表 哈希表&#xff08;Hash Table&#xff…

UML 活動圖詳解:以機票預訂系統用戶注冊為例

目錄 一、UML 活動圖的基本元素 二、題目原型 三、機票預訂系統用戶注冊的活動圖分析 四、活動圖繪畫 五、總結 在軟件開發過程中&#xff0c;UML&#xff08;統一建模語言&#xff09;活動圖是一種非常重要的工具&#xff0c;它能夠幫助我們清晰地理解系統的業務流程和工…

FX10(CYUSB4014)USB3.2(10Gbps)開發筆記分享(1):硬件設計與開發環境搭建

作者&#xff1a;Hello&#xff0c;Panda 大家早上好&#xff0c;中午好&#xff0c;下午好&#xff0c;晚上好&#xff0c;熊貓君又來了。這次計劃做一個連載&#xff0c;大概6期左右&#xff0c;主要介紹英飛凌最新的FX5/10/20的器件應用。目前&#xff0c;熊貓君手上調試的…

前端項目部署

一、本地服務器部署&#xff1a; 解決頁面刷新404問題&#xff1a; 1、使用 hash 模式 2、當路徑不匹配的時候&#xff0c;直接訪問 index.html 3、使用插件&#xff1a;connect-history-api-fallback https://www.npmjs.com/package/connect-history-api-fallback npm ins…

觀測云數據在Grafana展示的最佳實踐

背景 在當今的數據驅動世界中&#xff0c;組織越來越依賴于實時數據來做出決策。數據可視化是理解和分析這些數據的關鍵工具&#xff0c;它幫助用戶將復雜的數據集轉換成直觀的圖表和儀表板&#xff0c;從而更容易識別趨勢、模式和異常。Grafana&#xff0c;作為一個功能強大的…

架構師面試(三十六):廣播消息

題目 在像 IM、短視頻、游戲等實時在線類的業務系統中&#xff0c;一般會有【廣播消息】業務&#xff0c;這類業務具有瞬時高流量的特點。 在對【廣播消息】業務實現時通常需要同時寫 “系統消息庫” 和更新用戶的 “聯系人庫” 的操作&#xff0c;用戶的聯系人表中會有未讀數…

大模型微調 - transformer架構

什么是Transformer Transformer 架構是由 Vaswani 等人在 2017 年提出的一種深度學習模型架構&#xff0c;首次發表于論文《Attention is All You Need》中 Transformer 的結構 Transformer 編碼器&#xff08;Encoder&#xff09; 解碼器&#xff08;Decoder&#xff09; …