數字接龍(dfs)(藍橋杯)

非常好的聯系dfs的一道題目!
推薦看這位大佬的詳解——>大佬詳細題解

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;const int N = 2e5 + 10,M=20;
int a[M][M];
bool val[M][M];
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
int n,k;
int path[M][M];
string ans;      //這時的數字  //答案字符  //總共經過數目
void dfs(int x,int y,int url,string s,int num)
{if(x==n-1&&y==n-1&&num==n*n){if(ans.empty())ans=s;return;}//為最后一次遞歸設置終止條件,找到答案終止遞歸(項目結題)for(int i=0;i<8;i++){int nx=x+dx[i],ny=y+dy[i];//針對下一次遞歸設置條件(主觀認為已經到下一次)(寫申請書)if(nx>n-1||ny>n-1||nx<0||ny<0)continue;if(val[nx][ny]==true)continue;if(i==1&&(path[nx][ny-1]==3||path[nx+1][ny]==7))continue;if(i==3&&(path[nx-1][ny]==5||path[nx][ny-1]==1))continue;if(i==5&&(path[nx-1][ny]==3||path[nx][ny+1]==7))continue;if(i==7&&(path[nx+1][ny]==1||path[nx][ny+1]==5))continue;if(url<k-1&&a[nx][ny]==url+1||url==k-1&&a[nx][ny]==0){path[x][y]=i;//下一次行動的方向val[nx][ny]=true;dfs(nx,ny,a[nx][ny],s+to_string(i),num+1);//把參數帶到下一次(申請生效)if(!ans.empty())return;//這里需要結束所有的void調用,已經第一次找到了,不再回溯(終止回溯/申請)path[x][y]=-1;//回溯(相當于撤回原來的申請,預備下一次申請)val[nx][ny]=false;//回溯}}	
}
int main()
{cin>>n>>k;for(int i=0;i<n;i++)for(int j=0;j<n;j++){cin>>a[i][j];path[i][j]=-1;}string star;val[0][0]=true;dfs(0,0,0,star,1);if(!ans.empty())cout<<ans<<endl;else cout<<-1<<endl;return 0;
}

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

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

相關文章

[光學原理與應用-318]:職業 - 光學工程師的技能要求

光學工程師需具備扎實的專業知識、熟練的軟件操作能力、豐富的實踐經驗、良好的溝通協作與項目管理能力&#xff0c;以及持續學習和創新能力&#xff0c;以下是具體技能要求&#xff1a;一、專業知識與理論基礎光學基礎知識&#xff1a;熟悉光學原理、光學材料、光學儀器等基礎…

萬字詳解架構設計:業務架構、應用架構、數據架構、技術架構、單體、分布式、微服務都是什么?

01 架構要素結構連接在軟件行業&#xff0c;對于什么是架構一直有很多的爭論&#xff0c;每個人都有自己的理解。不同的書籍上、不同的作者&#xff0c;對于架構的定義也不統一&#xff0c;角度不同&#xff0c;定義不同。此君說的架構和彼君理解的架構未必是一回事。因此我們在…

使用Docker搭建StackEdit在線MarkDown編輯器

1、安裝Docker# 安裝Docker https://docs.docker.com/get-docker/# 安裝Docker Compose https://docs.docker.com/compose/install/# CentOS安裝Docker https://mp.weixin.qq.com/s/nHNPbCmdQs3E5x1QBP-ueA2、安裝StackEdit2.1、方式1詳見&#xff1a; https://benweet.github.…

【C++詳解】用哈希表封裝實現myunordered_map和 myunordered_set

文章目錄一、框架分析二、封裝框架&#xff0c;解決KeyOfT三、?持iterator的實現四、const迭代器五、實現key不支持修改六、operator[ ]七、一些補充(reserve和rehash)八、源碼一、框架分析 SGI-STL30版本源代碼中沒有unordered_map和unordered_set&#xff0c;SGI-STL30版本是…

【 MYSQL | 基礎篇 四大SQL語句 】

摘要&#xff1a;本文先介紹數據庫 SQL 的核心概念&#xff0c;接著闡述 SQL 通用語法與 DDL、DML、DQL、DCL 四大分類&#xff0c;隨后詳細講解各類語句操作&#xff0c;包括 DDL 的數據庫與表操作及數據類型&#xff0c;DML 的數據增刪改&#xff0c;DQL 的查詢語法與功能&am…

Transformer 模型在自動語音識別(ASR)中的應用

文章目錄自動語音識別&#xff08;ASR&#xff09;簡介簡要介紹TransformerTransformer 在 ASR 中的應用基于“語音識別模型整體框架圖”的模塊介紹1. 音頻采集模塊&#xff08;Audio Acquisition Module&#xff09;2. 音頻預處理模塊&#xff08;Audio Preprocessing Module&…

集成電路學習:什么是SSD單發多框檢測器

SSD:單發多框檢測器 SSD(Single Shot MultiBox Detector)是一種高效的目標檢測算法,它通過單一網絡實現對象檢測,具有快速且準確的特點。以下是關于SSD的詳細解析: 一、SSD的技術特點 1、單一網絡檢測: SSD通過單一的前向傳播過程預測不同尺度的邊界框和類別概率…

【車載開發系列】汽車零部件DV與PV試驗的差異

【車載開發系列】汽車零部件DV與PV試驗的差異 【車載開發系列】汽車零部件DV與PV試驗的差異【車載開發系列】汽車零部件DV與PV試驗的差異一. 概念說明二. DV測試&#xff08;Design Verification 設計驗證測試&#xff09;三. PV測試&#xff08;Performance Verification 性能…

如何在阿里云百煉中使用釘釘MCP

本文通過阿里云百煉釘釘MCP配合&#xff0c;完成釘釘AI表格&#xff08;多維表&#xff09;數據管理 &#xff0c;其他AI開發工具可參照本文完成部署。 準備工作 在正式開始前&#xff0c;需要提前了解什么是釘釘MCP&#xff0c;詳情請參考釘釘服務端API MCP 概述。已經注冊了…

【lucene】SpanNearQuery中的slop

在`SpanNearQuery`中,`slop`的定義比你描述的稍微復雜一些。以下是一些更準確的解釋和分析: 1. `slop`的定義 `SpanNearQuery`的`slop`參數指的是兩個`SpanTermQuery`(或更一般的`SpanQuery`子句)之間允許的最大“不匹配位置”的數量。具體來說: - 不匹配位置:指的是第…

sqli-labs通關筆記-第64關 GET數值型SQL盲注(雙括號閉合 130次探測機會)

目錄 一、代碼審計 1、源碼分析 2、SQL注入風險分析 &#xff08;1&#xff09;聯合SQL注入方法&#xff08;不可行&#xff09; &#xff08;2&#xff09;報錯SQL注入方法&#xff08;不可行&#xff09; &#xff08;3&#xff09;總結 二、滲透實戰 1、滲透準備 2…

每日一題——力扣498 對角線遍歷

力扣498 對角線遍歷 問題分析給定一個 m x n 矩陣&#xff0c;我們需要按照對角線順序遍歷所有元素。對角線遍歷的特點是&#xff1a; 每條對角線上元素的行索引與列索引之和為常數遍歷方向交替變化&#xff1a;奇數對角線&#xff08;從右上到左下&#xff09;&#xff0c;偶數…

【單例模式】

概述一個類不管創建多少次對象&#xff0c;永遠只能得到該類型的一個對象的實例。常用到的比如日志模塊 &#xff0c;數據庫模塊餓漢&#xff1a;在類加載時就創建單例對象&#xff0c;因此它是線程安全的&#xff0c;因為對象的創建在程序啟動時就已經完成&#xff0c;不存在多…

Unity開發如何實現換裝技術

一、3D換裝方案SkinnedMeshRenderer組件替換&#xff08;最常用&#xff09;適用場景&#xff1a;角色需要保持骨骼動畫&#xff0c;更換服裝/武器等實現步驟&#xff1a;1.準備模型&#xff1a;所有服裝需使用相同骨骼結構&#xff08;建議在建模軟件中綁定到同一套骨骼&#…

RabbitMQ面試精講 Day 29:版本升級與平滑遷移

【RabbitMQ面試精講 Day 29】版本升級與平滑遷移 在“RabbitMQ面試精講”系列的第29天&#xff0c;我們聚焦于一個在中高級系統架構與運維面試中極具分量的話題——RabbitMQ的版本升級與平滑遷移。隨著業務發展和RabbitMQ自身功能演進&#xff08;如從經典集群到Quorum隊列、從…

Python-機器學習概述

??一、人工智能三大概念?? ??人工智能&#xff08;AI&#xff09;?? 定義&#xff1a;使用計算機模擬或代替人類智能的研究領域 目標&#xff1a;像人類一樣思考&#xff08;理性推理&#xff09;、行動&#xff08;決策執行&#xff09; 別名&#xff1a;仿智 ??…

GIT壓縮提交,將多個已經push的commit提交,合并成一個

1.選中要合并的提交2.選中后右鍵選著Squash Committs3.重新編輯提交信息4.操作完成后不能pull,要強制pushgit push --force

(多線程)線程安全和線程不安全 產生的原因 synchronized關鍵字 synchronized可重入特性死鎖 如何避免死鎖 內存可見性

線程安全問題產生原因 線程安全問題主要發生在多線程環境下&#xff0c;當多個線程同時訪問共享資源時&#xff0c; 如果沒有采取適當的同步措施&#xff0c;就可能導致數據不一致或程序行為異常1.[根本]操作系統對于線程的調度是隨機的.搶占式執行&#xff0c;這是線程安全問題…

defineCustomElement 的局限性及重載需求分析

一、defineCustomElement 的核心局限性 Vue 的 defineCustomElement 雖然實現了 Vue 組件到 Web Components 的轉換,但在跨框架/跨語言場景下存在以下關鍵局限,這也是你的項目需要重載其返回構造器的根本原因: 1. 框架間事件模型不兼容 Vue 事件機制:依賴 $emit 轉換的 C…

如何在前端開發中應用AI技術?

一、AI 輔助前端開發流程&#xff08;提效工具&#xff09;智能代碼生成與補全使用 AI 編程工具&#xff08;如 GitHub Copilot、Cursor、Amazon CodeWhisperer&#xff09;實時生成代碼片段&#xff0c;支持 HTML、CSS、JavaScript、React/Vue 等框架語法。例如&#xff0c;輸…