Frame Stacking 框架堆疊

2022-04-07 09:26:48 字數 1648 閱讀 4798

/*

【題目**】

【題目分析】

幾張疊在一起,給出堆疊後的情況,要求出所有可能的從下到上的堆疊順序。

【思路分析】

1.題目已經很明確的告訴每個邊框的每條邊,至少會有乙個字母露在外面

所以遍歷整張圖,確定每個邊框的範圍。 只需確定左上角和右下角即可。

2.根據每個邊框的範圍再遍歷,若應該出現a的位置出現了b,那麼b一定在a上面。這樣各個邊框的上下順序就求出來。

若b在a上面,那麼記錄a->b。

3.拓撲排序

4.要求輸出所有能情況且按字母順序輸出。那麼只要按照字母順序使用dfs(遞迴)來解決,注意處理完入度為0的點(刪邊更新入度)

遞迴進去後要還原回來(刪去的邊弄回來,入度更新回來)。從而保證可以下次使用

【小小心得】

參考了網上**;拓撲排序的遞迴用法

*/#include

#include

#include

#include

#include

using

namespace

std;

struct

frame

};//

記錄26個字母使用了哪些

bool used[26

];//

入度 int into[26

];//

儲存拓撲排序的圖

int map[26][26

];//

輸入的原始圖

char matrix[32][32

];vector

ans;

//建立拓撲排序的圖 即更新into陣列

void

buildmap(frame frame)

}if (matrix[j][frame[i].y2] != i+'a'

) }}

//遍歷frame第一行和最後一行

for (int j = frame[i].y1; j <= frame[i].y2; ++j)

}if (matrix[frame[i].x2][j] != i+'a'

) }}

}}

}

//depth用於判斷遞迴了多少次

void topo(int depth, int

count)

for (int i = 0; i < 26; ++i)

}topo(depth+1

, count);

//還原

ans.pop_back();

into[i] = 0

;

for (int k = 0; k < 26; ++k)

} }}

}}int

main()}}

buildmap(frame);

//一共用了多少個字母

int count = 0

;

for (int i = 0; i < 26; ++i)

if(used[i])

count++;

topo(

0, count);

}}

框架 應用框架

框架也是一種重用方式,重用粒度比構件大,與物件導向技術關係密切。1定義 框架johnson 框架 模式 構件。框架是由開發人員定製的應用系統的骨架 skeleton 是整個系統或子系統的可重用設計,由一組抽象構件和構件例項間的互動方式組成。應用框架 buschmann 特定領域應用的框架。框架技術 ...

前期框架 Bootstrap框架

1.什麼是css框架 封裝了很多重複的工作 提高了開發的效率 隨著web應用變得越來越複雜。在大量的開發過程中,我們發現有許多的功能模組非常相似。例如輪播圖,分頁,導航,進度條,模態框等,每一次都手動書寫無疑是在做重複工作。框架的作用就是把這些功能封裝稱為乙個個元件,在開發過程中直接拿過來使用即可,...

python caffe框架 caffe框架基礎

caffe的核心模組 caffe是乙個清晰而高效的深度學習框架,其作者是博士畢業於uc berkeley的賈揚清,目前在google工作。caffe是純粹的c cuda架構,支援命令列 python和matlab介面 可以在cpu和gpu直接無縫切換。caffe的核心模組有三個,分別是blobs l...