日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【分治算法-02】算法经典问题

發布時間:2023/12/18 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【分治算法-02】算法经典问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算法經典問題

棋盤覆蓋問題
  • 問題描述:
  • 自我理解:對于僅存在一個奇異點,想到奇異點的填充肯定可以通過一個“L”形狀構成一個正方形。我們可以通過不斷縮小方格尺寸(我們的目標是每一個縮小尺寸到4?4的小方格中都有一個“認為規定的奇異點,這些相連奇異點同時也能構成一個"L“形狀,但也可以想成是我們之前通過"L"模型劃分的”人為奇異點“),因為之可能存在有限種情況。不好分析L的擺放模式,但是我們可以構造”奇異點“。全部分清奇異點存在的種類,然后再通過”L“形去填充這些空白的”格子“。
  • 受到啟發于這個寶藏博客”棋盤覆蓋問題的圖形解答“
  • //棋盤覆蓋問題 #include <stdio.h> #define MaxValue 100 void chessboard(int tx,int ty,int x,int y,ing size) {int s =gupai++;int mid = size/2;if(size==1)return;if(tx<x+mid && ty<y+mid)//左方格上{chessboard(tx,ty,x,y,mid);}else//不在左上方的情況{//假定奇異點在右下角QiPan[x+mid-1][y+mid-1] = s;chessboard(tx+mid-1,ty+mid-1,x,y,mid);}if((tx<x+mid) && (ty>=y+mid))//奇異點在右上方{chessboard(tx,ty,x,y+mid,mid);}else{//規定新的奇異點在右上方子棋盤的左下角//如果不在右上方QiPan[x+mid-1][y+mid] = s;chessboard(x+mid-1,y+mid,x,y+mid,mid);}if(tx>=x+mid&&ty<y+mid)//判斷是否在左下方{chessboard(tx,ty,x+mid,y,mid);}else{//如果奇異點不在左下角的棋盤里//規定左下角子棋盤的右上角點為奇異點QiPan[x+mid][y+mid-1] = s;chessboard(x+mid,y+mid-1,x+mid,y,mid);}if((tx>=x+mid)&&(ty>=y+mid))//如果奇異點在右下角點{chessboard(tx,ty,x+mid,y+mid,mid);}else {//如果不在右下角點//規定右下子棋盤的左上角點為新的奇異點QiPan[x+mid][y+mid] = s;chessboard(x+mid,x+mid,x+mid,y+mid,mid);} int main () {//輸入方格的尺寸,奇異方格的位置int tx,ty,x=0,y=0,size;int QiPan[MaxValue][MaxValue];int gupai =0;scanf("%d %d %d",&tx,&ty,&size);chessboard(tx,ty,x,y,size); }

    總結

    以上是生活随笔為你收集整理的【分治算法-02】算法经典问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。