P8642 [藍橋杯 2016 國 AC] 路徑之謎

[藍橋杯 2016 國 AC] 路徑之謎

題目描述

小明冒充 X X X 星球的騎士,進入了一個奇怪的城堡。

城堡里邊什么都沒有,只有方形石頭鋪成的地面。

假設城堡地面是 n × n n\times n n×n 個方格。如圖所示。

按習俗,騎士要從西北角走到東南角。

可以橫向或縱向移動,但不能斜著走,也不能跳躍。

每走到一個新方格,就要向正北方和正西方各射一箭。

(城堡的西墻和北墻內各有 n n n 個靶子)

同一個方格只允許經過一次。但不必做完所有的方格。

如果只給出靶子上箭的數目,你能推斷出騎士的行走路線嗎?

有時是可以的,比如如圖中的例子。

本題的要求就是已知箭靶數字,求騎士的行走路徑(測試數據保證路徑唯一)

輸入格式

第一行一個整數 N ( 0 < N < 20 ) N(0<N<20) N(0<N<20),表示地面有 N × N N \times N N×N 個方格。

第二行 N N N 個整數,空格分開,表示北邊的箭靶上的數字(自西向東)

第三行 N N N 個整數,空格分開,表示西邊的箭靶上的數字(自北向南)

輸出格式

一行若干個整數,表示騎士路徑。

為了方便表示,我們約定每個小格子用一個數字代表,從西北角開始編號 $:0,1,2,3 \cdots $。

比如,圖中的方塊編號為:

0  1  2  3
4  5  6  7
8  9  10 11
12 13 14 15

樣例 #1

樣例輸入 #1

4
2 4 3 4
4 3 3 3

樣例輸出 #1

0 4 5 1 2 3 7 11 10 9 13 14 15

提示

時限 1 秒, 256M。藍橋杯 2016 年第七屆國賽

眾所周知,藍橋杯獎水題不水
經過兩個小時的折磨,終于做出來了,網上的題解能不能先把題目過了再發。。
使用dfs,運用減枝,開四個數組來標記,然后就是dfs常規的了,但是題目各種細節,使人心力交瘁

#include<bits/stdc++.h>
using namespace std;
const int N=25;
int g[N][N];
bool vis[N][N];
int path[450];
int n,cnt,k;
bool f;
int ax[N],ay[N];
int bx[N],by[N];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
bool check()
{for(int i=1;i<=n;i++){if(bx[i]!=ax[i]||by[i]!=ay[i])return 0;}return 1;
}void dfs(int x,int y)
{if(f) return ;if(x==n&&y==n&&check()){for(int i=0;i<cnt;i++)cout<<path[i]<<" ";f=1;return;}for(int i=0;i<4;i++){int xxx=x+dx[i],yyy=y+dy[i];if(vis[xxx][yyy]||xxx<1||xxx>n||yyy<1||yyy>n||bx[xxx]>=ax[xxx]||by[yyy]>=ay[yyy])continue;bx[xxx] ++;by[yyy] ++;vis[xxx][yyy]=true;path[cnt++]=g[xxx][yyy];dfs(xxx,yyy);bx[xxx] --;by[yyy] --;vis[xxx][yyy]=false;path[cnt--]=-1;		}}
int main()
{cin>>n;for(int i=1;i<=n;i++)cin>>ay[i];for(int i=1;i<=n;i++)cin>>ax[i];for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){g[i][j]=k++;}}vis[1][1]=true;path[0]=0;cout<<"0"<<" ";bx[1]=1,by[1]=1;dfs(1,1);return 0;
}

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

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

相關文章

C/C++中const關鍵字詳解

為什么使用const&#xff1f;采用符號常量寫出的代碼更容易維護&#xff1b;指針常常是邊讀邊移動&#xff0c;而不是邊寫邊移動&#xff1b;許多函數參數是只讀不寫的。const最常見用途是作為數組的界和switch分情況標號(也可以用枚舉符代替)&#xff0c;分類如下&#xff1a;…

音視頻 vs2017配置FFmpeg

vs2017 ffmpeg4.2.1 一、首先我把FFmpeg整理了一下&#xff0c;放在C盤 二、新建空項目 三、添加main.cpp&#xff0c;將bin文件夾下dll文件拷貝到cpp目錄下 #include<stdio.h> #include<iostream>extern "C" { #include "libavcodec/avcodec.h&…

【Docker】使用 Docker Registry 搭建自己的 Docker 鏡像倉庫

使用 Docker Registry 搭建自己的 Docker 鏡像倉庫 在使用 Docker 進行應用程序的開發和部署時&#xff0c;使用 Docker 鏡像倉庫是一個很好的實踐。它允許集中存儲和管理 Docker 鏡像&#xff0c;方便團隊協作和版本控制。在本文中&#xff0c;將介紹如何使用 Docker Registr…

Nginx隨筆

Nginx下載鏈接 安裝命令&#xff1a; apt update apt install nginx 一、基礎命令&#xff08;Ubuntu&#xff09; 1、在全局 nginx -t //檢查Nginx的配置文件是否有錯 systemctl start nginx //啟動Nginx systemctl stop nginx //停止Nginx systemctl status nginx //查…

【數據結構與算法——TypeScript】圖結構(Graph)

【數據結構與算法——TypeScript】 圖結構(Graph) 認識圖結構以及特性 什么是圖? 在計算機程序設計中&#xff0c;圖結構 也是一種非常常見的數據結構。 但是&#xff0c;圖論其實是一個非常大的話題 認識一下關于圖的一些內容 圖的抽象數據類型一些算法實現。 什么是圖?…

jmeter獲取mysql數據

JDBC Connection Configuration Database URL: jdbc:mysql:// 數據庫地址 /庫名 JDBC Driver class&#xff1a;com.mysql.jdbc.Driver Username&#xff1a;賬號 Password&#xff1a;密碼 JDBC Request 字段含義 字段含義 Variable Name Bound to Pool 數據庫連接池配置…

使用vue3 + ts + vite + v-md-editor 在前端頁面預覽markdown文件

1.效果預覽 2. 依賴包安裝 yarn add kangc/v-md-editornext v-md-editor中文官網&#xff1a;https://code-farmer-i.github.io/vue-markdown-editor/zh/ v-md-editor分為4種組件&#xff1a; 輕量版編輯器進階版編輯器預覽組件html預覽組件 對UI組件庫頁面&#xff0c;我只需…

問道管理:縮量小幅上漲說明什么?

股市里面&#xff0c;股票價格上漲或跌落都是常見現象。可是關于那些在商場上尋求收益的出資者來說&#xff0c;他們需要對每一個股市中的價格動搖有深化的了解&#xff0c;以便做出更正確的出資決策。最近&#xff0c;出資者們發現商場縮量小幅上漲的現象時有發生&#xff0c;…

Jmeter壓測實戰:Jmeter二次開發之自定義函數

目錄 1 前言 2 開發準備 3 自定義函數核心實現 3.1 新建項目 3.2 繼承實現AbstractFunction類 3.3 最終項目結構 4 Jmeter加載擴展包 4.1 maven構建配置 4.2 項目打包 4.3 Jmeter加載擴展包 5 自定義函數調用調試 5.1 打開Jmeter函數助手&#xff0c;選擇自定義函數…

clickhouse 刪除操作

OLAP 數據庫設計的宗旨在于分析適合一次插入多次查詢的業務場景&#xff0c;市面上成熟的 AP 數據庫在更新和刪除操作上支持的均不是很好&#xff0c;當然 clickhouse 也不例外。但是不友好不代表不支持&#xff0c;本文主要介紹在 clickhouse 中如何實現數據的刪除&#xff0c…

單鏈表相關操作(插入,刪除,查找)

通過上一節我們知道順序表的優點&#xff1a; 可隨機存儲&#xff08;O(1)&#xff09;&#xff1a;查找速度快 存儲密度高&#xff1a;每個結點只存放數據元素&#xff0c;而單鏈表除了存放數據元素之外&#xff0c;還需存儲指向下一個節點的指針 http://t.csdn.cn/p7OQf …

【2023年11月第四版教材】《第4章-信息系統管理(合集篇)》

第4章-信息系統管理之管理方法&#xff08;第四版新增章節&#xff09;&#xff08;第一部分&#xff09; 章節說明1 管理方法1.1 信息系統四個要素1.2 信息系統四大領域1.3 信息系統戰略三角1.4 信息系統架構轉換1.5 信息系統體系架構1.6 信息系統運行1.7 運行和監控1.8 管理和…

北郵鄧中亮:深度融合5G+北斗,實現高精準定位

如今&#xff0c;萬物互聯時代&#xff0c;物與物、物與人、人與人之間需要實現更多的互聯。在如此復雜多變的環境中&#xff0c;定位技術面臨著著更多挑戰和需求&#xff0c;需要不斷的創新和改進。唯有如此&#xff0c;才能滿足未來智能交通、無人駕駛和工業互聯網等領域的高…

kafka基本概念及操作

kafka介紹 Kafka是最初由Linkedin公司開發&#xff0c;是一個分布式、支持分區的&#xff08;partition&#xff09;、多副本的 &#xff08;replica&#xff09;&#xff0c;基于zookeeper協調的分布式消息系統&#xff0c;它的最大的特性就是可以實時的處理大量數據以滿足各…

【LeetCode】242 . 有效的字母異位詞

242 . 有效的字母異位詞&#xff08;簡單&#xff09; 方法&#xff1a;哈希表 思路 首先判斷兩個字符串長度是否相等&#xff0c;不相等直接返回 false&#xff1b;接下來設置一個長度為26 的哈希表&#xff0c;分別對應26個小寫字母&#xff1b;遍歷兩個字符串&#xff0c;…

Go語言工程實踐之測試與Gin項目實踐

Go 語言并發編程 及 進階與依賴管理_軟工菜雞的博客-CSDN博客 03 測試 回歸測試一般是QA(質量保證)同學手動通過終端回歸一些固定的主流程場景 集成測試是對系統功能維度做測試驗證,通過服務暴露的某個接口,進行自動化測試 而單元測試開發階段&#xff0c;開發者對單獨的函數…

day-21 代碼隨想錄算法訓練營(19)二叉樹part07

530.二叉搜索樹的最小絕對差 思路一&#xff1a;二叉搜索樹的中序遍歷必為升序數組&#xff0c;加入數組后計算相鄰兩個數差值&#xff0c;即可求出最小絕對差 思路二&#xff1a;同樣的思路&#xff0c;中序遍歷&#xff0c;直接使用指針記錄上一個節點&#xff0c;同時更新…

KAFKA第二課之生產者(面試重點)

生產者學習 1.1 生產者消息發送流程 在消息發送的過程中&#xff0c;涉及到了兩個線程——main線程和Sender線程。在main線程中創建了一個雙端隊列RecordAccumulator。main線程將消息發送給RecordAccumulator&#xff0c;Sender線程不斷從RecordAccumulator中拉取消息發送到K…

03-基礎入門-搭建安全拓展

基礎入門-搭建安全拓展 1、涉及的知識點2、常見的問題3、web權限的設置4、演示案例-環境搭建&#xff08;1&#xff09;PHPinfo&#xff08;2&#xff09;wordpress&#xff08;3&#xff09;win7虛擬機上使用iis搭建網站&#xff08;4&#xff09;Windows Server 2003配置WEB站…

C#應用處理傳入參數 - 開源研究系列文章

今天介紹關于C#的程序傳入參數的處理例子。 程序的傳入參數應用比較普遍&#xff0c;特別是一個隨操作系統啟動的程序&#xff0c;需要設置程序啟動的時候不顯示主窗體&#xff0c;而是在后臺運行&#xff0c;于是就有了傳入參數問題&#xff0c;比如傳入/h或者/min等等。所以此…