此題是十六進製制轉為二進位制+dfs,通過搜尋影象中有幾個被隔絕的白「洞」來判斷是哪個文字。這裡考慮乙個問題,影象最外面的白色空間怎麼辦?想到先提前把影象外層的白色空間搜尋完畢,從而搜尋時只會考慮被包在中間的白色。但是如果黑色佔據了邊緣,隔絕了外層的白色呢?所以在這裡我在整個影象的外面再加一層白色,從而使整個影象的外部白色連成一起。輸出時,由於按照字典序輸出,可以考慮使用vector,每次判斷出乙個文字時加入,最後在輸出前呼叫一次sort()即可。
**如下:
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 205;
char dict[16][5] = ;
char alpha = ;
int a[maxn][maxn];
int n, m;
int dirx = , diry = ;
int cur;
bool isin(int r, int c)
void dfs1(int r, int c)
void dfs2(int r, int c)
else
if (a[dr][dc] == 1)
dfs2(dr, dc);
}}int main()
}m = 4 * m;
dfs1(0, 0);
for (int i = 1; i <= n; i++)}}
sort(v.begin(), v.end());
printf("case %d: ", kase);
for (int i = 0; i < v.size(); i++)
cout
<< v[i];
cout
<< endl;
}return
0;}
UVa 232 字串處理
背景 做了三個半小時,能力堪憂啊,各種除錯,各種出錯,要分析一下,這些錯點盡量不能再錯。學習 1.對於字串陣列,要把每一行都開大一位,該位用來存放 0 否則將會出現未知輸出。也就是說 字串二維陣列的每一行都可以看做乙個字元陣列,結尾都有乙個 0 printf在用 s 格式符輸出字串,總是從給定的首位...
uva11552 字串重排
字串從左到右每k個為一組 保證字串長度是k的倍數 組內字串可以任意移動位置,組間順序不能變換。求變換後最少的塊數。塊的定義 連續相等的字串為乙個快 每一組為乙個單位,因此dp時需要加入組作為一維,又發現計算加入新組後塊的增量,需要知道上一組中最後乙個字元是什麼,因此狀態設計為 dp i j 前i組中...
uva8183(字串處理)
bool vow char ch 是否是母音 void solve vector vec,char ss 將每句話分解為單詞,緊跟在單詞後的標點符號和單詞合併 int judge string s 返回乙個單詞的音節數 if flag s i y s i y 注意y的處理,如果此處的y符合此條件,後...