94. 遞歸實現排列型枚舉 刷題筆記

思路? 依次枚舉 每個位置用哪個數字?

要求按照字典序最小來輸出

而每次搜索下一層時i都是從1開始

也就是說 如果有小的數可以填上 那么該方案會填上這個數字

例如 當n等于3?

第一次搜索

1 2 3輸出后返回

返回后此時i=3 第二個位置填3

1 3 2 輸出后返回

此時返回到第一層

i來到2

第一個位置填2

1 還沒被用過

因此?

2 1 3

以此推類

代碼

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int n;
const int N=10;
int st[N];
bool used[N];?
void dfs(int u){
?? ?if(u>n){
?? ??? ?for(int i=1;i<=n;i++){
?? ??? ??? ?cout<<st[i]<<' ';
?? ??? ?}
?? ??? ?cout<<endl;
?? ??? ?return;
?? ?}
?? ?for(int i=1;i<=n;i++){
?? ??? ?if(!used[i]){
?? ??? ??? ?//如果該數沒被用過 將位置填入該數?
?? ??? ??? ?used[i]=true;
?? ??? ??? ?st[u]=i;
?? ??? ??? ?dfs(u+1);
?? ??? ??? ?//搜索下一層 ?
?? ??? ??? ?used[i]=false;//恢復現場?
?? ??? ??? ?st[u]=0;//恢復現場
?? ??? ??? ??
?? ??? ?}
?? ?}
?? ?
}
int main(){
?? ?cin>>n;
?? ?dfs(1);
?? ?
?? ?
?? ?return 0;
}#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int n;
const int N=10;
int st[N];
bool used[N];?
void dfs(int u){
?? ?if(u>n){
?? ??? ?for(int i=1;i<=n;i++){
?? ??? ??? ?cout<<st[i]<<' ';
?? ??? ?}
?? ??? ?cout<<endl;
?? ??? ?return;
?? ?}
?? ?for(int i=1;i<=n;i++){
?? ??? ?if(!used[i]){
?? ??? ??? ?//如果該數沒被用過 將位置填入該數?
?? ??? ??? ?used[i]=true;
?? ??? ??? ?st[u]=i;
?? ??? ??? ?dfs(u+1);
?? ??? ??? ?//搜索下一層 ?
?? ??? ??? ?used[i]=false;//恢復現場?
?? ??? ??? ?st[u]=0;//恢復現場
?? ??? ??? ??
?? ??? ?}
?? ?}
?? ?
}
int main(){
?? ?cin>>n;
?? ?dfs(1);
?? ?
?? ?
?? ?return 0;
}

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

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

相關文章

云計算 2月21號 (linux文件及用戶管理)

一、文件管理 1.1快捷鍵 編輯命令&#xff1a; Ctrl a &#xff1a;移到命令行首 Ctrl e &#xff1a;移到命令行尾 Ctrl u &#xff1a;從光標處刪除至命令行首 Ctrl k &#xff1a;從光標處刪除至命令行尾 Ctrl w &#xff1a;從光標處刪除至字首 Ctrl d &#x…

20240301-2-ZooKeeper面試題(二)

11. Chroot 特性 3.2.0 版本后&#xff0c;添加了 Chroot 特性&#xff0c;該特性允許每個客戶端為自己設置一個命名空間。如果一個客戶端設置了 Chroot&#xff0c;那么該客戶端對服務器的任何操作&#xff0c;都將會被限制在其自己的命名空間下。 通過設置 Chroot&#xff…

Win11遠程桌面登陸教程

必備軟件 Remote Desktop 這個軟件用于便捷操作 Tailscale 這個用于創建虛擬局域網讓兩臺設備處于同一個網段便于遠程連接 詳細步驟 0、打開電腦設置允許遠程連接模式 把這里的開關打開就行。 1、設置允許登陸的用戶以及密碼 在管理員模式下的宿主電腦上面輸入以下命令…

支付寶小程序中喚起支付(前后端)

Java后臺獲取支付寶支付唯一訂單號 /*** 支付寶小程序支付*/PostMapping(value "/xcxPayZFBTHREE")ResponseBodypublic Map<String,Object> xcxPayZFBTHREE(RequestBody byte[] req) {HashMap<String, Object> objectObjectMap new HashMap<>();…

jax可微分編程的筆記(7)

jax可微分編程的筆記(7) 第七章 優化算法 從優化理論的整體框架來看&#xff0c;任何優化問題都可以被分解為 模型的建立&#xff0c;損失函數的構造以及優化算法的選取這三個部分。 其中優化算法的具體形式&#xff0c;又依賴于步長下降方向和終止條件 的選取。 對于多維函…

JavaScript 瀏覽器元素滾動 scrollIntoView()

scrollIntoView() ? DOM 規范中沒有涉及的一個問題是如何滾動頁面中的某個區域。為填充這方面的缺失&#xff0c;不同瀏覽器實現了不同的控制滾動的方式。在所有這些專有方法中&#xff0c;HTML5 選擇了標準化 scrollIntoView()。 ? scrollIntoView() 方法存在于所有 HTML …

深度學習中常見的backbone、neck、head的理解

在深度學習中&#xff0c;常見的backbone、neck和head是指網絡結構的不同部分&#xff0c;它們各自承擔著不同的功能&#xff1a; Backbone&#xff08;骨干網絡&#xff09;&#xff1a;骨干網絡通常是指整個深度神經網絡的主要部分&#xff0c;負責提取輸入數據的特征。骨干網…

寒假作業Day 02

這是第二天的作業&#xff0c;fighting&#xff01; Day 02 一、選擇題 首先char* s[6]是指針數組&#xff0c;也就是其存儲的都是這些字符串的地址&#xff0c;其實際上的類型為char**&#xff0c;而fun函數傳入了s數組的首地址。而后續fun函數中打印字符&#xff0c;p[i]即…

ad18學習筆記十六:如何放置精準焊盤到特定位置,捕抓功能的講解

網上倒是一堆相關的指導 AD軟件熟練度提升&#xff0c;如何設置板框捕捉&#xff1f;_嗶哩嗶哩_bilibili 關于Altium Designer 20 的捕抓功能的講解_ad捕捉設置-CSDN博客 AD軟件捕捉進階實例&#xff0c;如何精確的放置布局元器件&#xff1f;_嗶哩嗶哩_bilibili AD繪制PCB…

項目-SERVER模塊-Socket模塊

Socket模塊 一、Socket模塊是什么&#xff1f;二、代碼實現1.成員變量2.構造、析構函數3.獲取套接字文件描述符4.創建套接字5.綁定地址信息6.開始監聽連接請求7.向服務器發起連接8.獲取新連接9.接收數據10.非阻塞接收數據11.發送數據12.非阻塞發送數據13.關閉套接字14.創建一個…

何時使用子查詢?一個使用子查詢的SQL示例及其工作原理

何時使用子查詢&#xff1f;給出一個使用子查詢的SQL示例&#xff0c;并解釋其工作原理。 子查詢&#xff0c;也稱為內部查詢或嵌套查詢&#xff0c;是嵌入在另一個SQL查詢中的查詢。外部查詢&#xff0c;有時稱為外部查詢或主查詢&#xff0c;是包含子查詢的查詢。子查詢可以…

20240301作業

1.使用fwrite、fread將一張隨意的bmp圖片&#xff0c;修改成德國的國旗 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> int main(int argc, const char *argv[]) {FILE* fp fopen("./gaoda.bmp","…

24.3.1 《CLR via C#》 筆記9

第十二章 泛型 泛型&#xff1a;支持泛型值類型、泛型引用類型、泛型接口、泛型委托&#xff1b;允許在引用類型、值類型和接口中定義泛型方法&#xff1b;泛型參數變量要么稱為T&#xff0c;要么以T開頭 具有泛型類型參數的類型稱為開放類型&#xff0c;不允許構造實例&#…

Java畢業設計 基于SpringBoot vue 社區團購系統

Java畢業設計 基于SpringBoot vue 社區團購系統 SpringBoot vue 社區團購系統 功能介紹 前端用戶: 首頁 圖片輪播 商品信息 商品分類展示 搜索 商品詳情 點我收藏 添加到購物車 立即購買 我要開團 去參團 評論 公告資訊 資訊詳情 登錄 注冊 個人中心 更新信息 點我充值 我的訂…

Mysql筆記3

1、快速創建表 原理&#xff1a; 將一個查詢結果當做一張表新建 這個可以完成表的快速復制 create table emp2 as select * from emp; mysql> select * from emp2; ---------------------------------------------------------------------- …

【vscode提取函數快捷鍵】提取函數,減少大方法的復雜度

在 Visual Studio Code 中&#xff0c;提取函數的快捷鍵取決于你所使用的編程語言和安裝的插件。以下是一些常用的快捷鍵組合&#xff0c;可以用來在 Visual Studio Code 中提取函數&#xff1a; 執行以下步驟來提取函數&#xff1a; 選中要提取的代碼塊。右鍵單擊選中的代碼…

System Verilog學習筆記(十二)——數組(2)

System Verilog學習筆記&#xff08;十二&#xff09;——數組&#xff08;2&#xff09; 動態數組 在編譯時不會為其定制尺寸&#xff0c;而是在仿真運行時來確定動態數組一開始為空&#xff0c;需要使用new[ ]來為其分配空間聲明方式 int dyn[],d2[]; //聲明了兩個動態數組…

git之遠程操作

一.分布式版本控制系統 分布式版本控制系統通常也有?臺充當“中央服務器”的電腦&#xff0c;但這個服務器的作?僅僅是?來?便“交換”?家的修改&#xff0c;沒有它?家也?樣?活&#xff0c;只是交換修改不?便?已。有了這個“中央服務器”的電腦&#xff0c;這樣就不怕…

ChatGPT學習第四周

&#x1f4d6; 學習目標 ChatGPT實踐操作 通過實際操作和練習&#xff0c;加深對ChatGPT功能的理解。 項目&#xff1a;創建一個ChatGPT應用案例 設計一個基于ChatGPT的小項目&#xff0c;將理論應用于實踐。 ?? 學習活動 學習資料 《萬字干貨&#xff01;ChatGPT 從零完…

[C++核心編程](一):內存分區

目錄 代碼區 全局區 棧區 堆區 new操作符 不同區域存放的數據&#xff0c;賦予不同的生命周期&#xff0c;給予開發人員更大的靈活編程。 代碼區 存放二進制代碼&#xff0c;由操作系統管理未執行程序&#xff08;.exe&#xff09;前已經存在共享&#xff0c;對頻繁執行…