亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++中棋盤覆蓋問題分析

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者:C語言編程學(xué)習(xí)基地 ? 2021-10-08 17:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

棋盤覆蓋問題

問題說明

在一個2^k * 2^k個方格組成的棋盤中,恰有一個方格與其它方格不同,稱該方格為一特殊方格。

棋盤覆蓋問題就是要用圖示的4種不同形態(tài)的L型骨牌覆蓋給定棋盤上除特殊方格之外的所有方格,且任何2個L型骨牌不得重疊覆蓋。

功能說明

本程序用分治法的思想解決了棋盤覆蓋問題,顯示輸出

代碼簡述

用戶輸入數(shù)據(jù),程序輸入檢測,動態(tài)分配空間,調(diào)用棋盤覆蓋函數(shù),把計算結(jié)果存儲到board(二維數(shù)組指針),顯示輸出。

其中棋盤覆蓋函數(shù)用分治的思想把棋盤分成四份,遞歸求解。

源碼示例:

#include《iostream》#include《math.h》#include《cctype》usingnamespacestd;intnum_Now =0;//記錄L型骨牌編號int**board =NULL;//棋盤指針//函數(shù)聲明

voidChessBoard(intnum_BoardTopLeftRow,intnum_BoardTopLeftColumn,intnum_SpecialRow,intnum_SpecialColumn,intboardSize);intmain() {intnum_BoardTopLeftRow =0,//棋盤左上角的行號

num_BoardTopLeftColumn =0,//棋盤左上角的列號num_SpecialRow =0,//特殊方格所在的行號num_SpecialColumn =0,//特殊方格所在的列號boardSize =0,//棋盤大小k =0;//構(gòu)成的(2^k)*(2^k)個方格的棋盤

//用戶界面cout 《《“---------------- 棋盤覆蓋問題 ----------------”《《 endl;cout 《《“請輸入k(k》=0),構(gòu)成(2^k)*(2^k)個方格的棋盤”《《 endl;//輸入k值cin 》》 k;//判斷輸入數(shù)據(jù)合法性,包括檢查輸入是否為數(shù)字,k值是否大于0if(cin.fail() || k 《0){cout 《《“輸入k錯誤!”《《 endl;system(“pause”);

return0;}//計算棋盤大小

boardSize =pow(2, k);cout 《《“請輸入特殊方格所在的行號和列號(從0開始,用空格隔開)”《《 endl;//輸入特殊方格所在的行號和列號cin 》》 num_SpecialRow 》》 num_SpecialColumn;//判斷輸入數(shù)據(jù)合法性,包括檢查輸入是否為數(shù)字,特殊方格行號列號是否大于0,特殊方格行號列號是否不大于棋盤大小

if(cin.fail() || num_SpecialRow 《0|| num_SpecialColumn 《0|| num_SpecialRow 》= boardSize || num_SpecialColumn 》= boardSize){cout 《《“輸入行號或列號錯誤!”《《 endl;system(“pause”);return0;}//分配棋盤空間

board =newint*[boardSize];for(autoi =0; i 《 boardSize; i++){board[i] =newint[boardSize];}//為特殊方格賦初值

0board[num_SpecialRow][num_SpecialColumn] =0;//執(zhí)行棋盤覆蓋函數(shù)

ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn, num_SpecialRow, num_SpecialColumn, boardSize);//顯示輸出

cout 《《“------------------------------------------------”《《 endl;for(autoi =0; i 《 boardSize; i++){for(autoj =0; j 《 boardSize; j++){cout 《《 board[i][j] 《《“ ”;}cout 《《 endl;}cout 《《“------------------------------------------------”《《 endl;//暫停查看結(jié)果

system(“pause”);//釋放內(nèi)存for(inti =0; i 《= boardSize; i++)delete[]board[i];delete[]board;//指針置空board =NULL;return0;}//棋盤覆蓋函數(shù)

voidChessBoard(intnum_BoardTopLeftRow,intnum_BoardTopLeftColumn,intnum_SpecialRow,intnum_SpecialColumn,intboardSize){//棋盤大小為1則直接返回if(boardSize ==1)return;intnum = ++num_Now,//L型骨牌編號

size = boardSize /2;//分割棋盤,行列各一分為二//覆蓋左上角子棋盤

if(num_SpecialRow 《 num_BoardTopLeftRow + size && num_SpecialColumn 《 num_BoardTopLeftColumn + size){//遞歸覆蓋含有特殊方格的子棋盤

ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn, num_SpecialRow, num_SpecialColumn, size);}else{//用編號為num的L型骨牌覆蓋右下角

board[num_BoardTopLeftRow + size -1][num_BoardTopLeftColumn + size -1] = num;//遞歸覆蓋其余棋盤

ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn, num_BoardTopLeftRow + size -1, num_BoardTopLeftColumn + size -1, size);}//覆蓋右上角子棋盤

if(num_SpecialRow 《 num_BoardTopLeftRow + size && num_SpecialColumn 》= num_BoardTopLeftColumn + size){//遞歸覆蓋含有特殊方格的子棋盤ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn + size, num_SpecialRow, num_SpecialColumn, size);}else{//用編號為num的L型骨牌覆蓋左下角

board[num_BoardTopLeftRow + size -1][num_BoardTopLeftColumn + size] = num;//遞歸覆蓋其余棋盤ChessBoard(num_BoardTopLeftRow, num_BoardTopLeftColumn + size, num_BoardTopLeftRow + size -1, num_BoardTopLeftColumn + size, size);}//覆蓋左下角子棋盤

if(num_SpecialRow 》= num_BoardTopLeftRow + size && num_SpecialColumn 《 num_BoardTopLeftColumn + size){//遞歸覆蓋含有特殊方格的子棋盤ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn, num_SpecialRow, num_SpecialColumn, size);}else{//用編號為num的L型骨牌覆蓋右上角

board[num_BoardTopLeftRow + size][num_BoardTopLeftColumn + size -1] = num;//遞歸覆蓋其余棋盤

ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn, num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size -1, size);}//覆蓋右下角子棋盤

if(num_SpecialRow 》= num_BoardTopLeftRow + size && num_SpecialColumn 》= num_BoardTopLeftColumn + size){//遞歸覆蓋含有特殊方格的子棋盤

ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size, num_SpecialRow, num_SpecialColumn, size);}else{//用編號為num的L型骨牌覆蓋左上角

board[num_BoardTopLeftRow + size][num_BoardTopLeftColumn + size] = num;//遞歸覆蓋其余棋盤

ChessBoard(num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size, num_BoardTopLeftRow + size, num_BoardTopLeftColumn + size, size);}}

今天的分享就到這里了,大家要好好學(xué)C++喲~

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7638

    瀏覽量

    144331
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2120

    瀏覽量

    76628

原文標(biāo)題:C++經(jīng)典算法問題:棋盤覆蓋問題(分治算法)!含源碼示例

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    C/C++代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性

    ?Perforce Validate??QAC?項目的相對/根路徑的支持。C++?分析也得到了增強,增加了用于檢測 C++?并發(fā)問題的新檢查,并改進了實體名稱和實
    的頭像 發(fā)表于 10-13 18:11 ?198次閱讀
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性

    技能+1!如何在樹莓派上使用C++控制GPIO?

    和PiGPIO等庫,C++可用于編程控制樹莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對速度和精度要求較高的硬件項目。在樹莓派社區(qū),關(guān)于“Python
    的頭像 發(fā)表于 08-06 15:33 ?3325次閱讀
    技能+1!如何在樹莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    Perforce QAC產(chǎn)品簡介:面向C/C++的靜態(tài)代碼分析工具(已通過SO 26262認證)

    Perforce QAC專為C/C++開發(fā)者打造,支持多種編碼規(guī)范、功能安全標(biāo)準(zhǔn)(ISO 26262)等,廣泛用于汽車、醫(yī)療、嵌入式開發(fā)領(lǐng)域,可幫助快速識別關(guān)鍵缺陷、提升代碼質(zhì)量、實現(xiàn)合規(guī)交付。
    的頭像 發(fā)表于 07-10 15:57 ?690次閱讀
    Perforce QAC產(chǎn)品簡介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的靜態(tài)代碼<b class='flag-5'>分析</b>工具(已通過SO 26262認證)

    請問如何在C++中使用NPU上的模型緩存?

    無法確定如何在 C++ 的 NPU 上使用模型緩存
    發(fā)表于 06-24 07:25

    在OpenVINO? C++代碼啟用 AddressSanitizer 時的內(nèi)存泄漏怎么解決?

    在 OpenVINO? C++代碼啟用 AddressSanitizer 時遇到內(nèi)存泄漏: \"#0 0xaaaab8558370 in operator new(unsigned
    發(fā)表于 06-23 07:16

    主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

    在單片機的地界兒里,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說內(nèi)存這道坎兒。您當(dāng)stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?734次閱讀
    主流的 MCU 開發(fā)語言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    創(chuàng)建了用于OpenVINO?推理的自定義C++和Python代碼,從C++代碼獲得的結(jié)果與Python代碼不同是為什么?

    創(chuàng)建了用于OpenVINO?推理的自定義 C++ 和 Python* 代碼。 在兩個推理過程中使用相同的圖像和模型。 從 C++ 代碼獲得的結(jié)果與 Python* 代碼不同。
    發(fā)表于 03-06 06:22

    為什么無法在運行時C++推理讀取OpenVINO?模型?

    使用模型優(yōu)化器 2021.1 版OpenVINO?轉(zhuǎn)換模型 使用 Runtime 2022.3 版本在 C++ 推理實現(xiàn) ( core.read_model()) 讀取模型OpenVINO?并
    發(fā)表于 03-05 06:17

    DLPC3430上電瞬間顯示棋盤格,為什么?

    問題現(xiàn)象:DLPC3430上電后會瞬間顯示棋盤格,然后再正常顯示MIPI DSI數(shù)據(jù),問題現(xiàn)象視頻已上傳。
    發(fā)表于 02-24 07:24

    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫案例:ThreadPoll

    1、程序簡介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫的線程池處理:ThreadPoll。本案例完成如下工作:創(chuàng)建1個線程池,設(shè)置該線程池內(nèi)部有1024個線程空間。啟動5個線程
    的頭像 發(fā)表于 02-10 18:09 ?552次閱讀
    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的<b class='flag-5'>C++</b>公共基礎(chǔ)類庫案例:ThreadPoll

    Spire.XLS for C++組件說明

    Spire.XLS for C++ 是一款專業(yè)的 C++ Excel 組件,可以用在各種 C++ 框架和應(yīng)用程序。Spire.XLS for C+
    的頭像 發(fā)表于 01-14 09:40 ?1255次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    EE-112:模擬C++的類實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《EE-112:模擬C++的類實現(xiàn).pdf》資料免費下載
    發(fā)表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類實現(xiàn)

    運動控制卡周期上報實時數(shù)據(jù)IO狀態(tài)之C++

    使用C++進行運動控制卡的周期上報功能實現(xiàn)
    的頭像 發(fā)表于 12-17 13:59 ?1403次閱讀
    運動控制卡周期上報實時數(shù)據(jù)IO狀態(tài)之<b class='flag-5'>C++</b>篇

    同樣是函數(shù),在CC++中有什么區(qū)別

    同樣是函數(shù),在 CC++ 中有什么區(qū)別? 第一個返回值。 C語言的函數(shù)可以不寫返回值類型,編譯器會默認為返回 int。 但是 C++ 的函數(shù),除了構(gòu)造和析構(gòu)這兩個特殊的函數(shù),必須
    的頭像 發(fā)表于 11-29 10:25 ?1200次閱讀

    C7000 C/C++優(yōu)化指南用戶手冊

    電子發(fā)燒友網(wǎng)站提供《C7000 C/C++優(yōu)化指南用戶手冊.pdf》資料免費下載
    發(fā)表于 11-09 15:00 ?0次下載
    <b class='flag-5'>C</b>7000 <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>優(yōu)化指南用戶手冊