古老的密碼
題目描述:
給定兩個長度一樣且不超過100的字串,判斷是否能把其中乙個字串的各個字母重排,之後對26個字母做乙個一一對映,使得兩個字串相同
例如,jwpudjstvp重排後可以得到wjdupsjpvt,之後把每個字母對映到它的前面乙個字母,得到victorious,輸入兩個字串,輸出yes或者no
題目分析:
因為字母可以重排對映(不一定往前對映),所以每個字母的位置並不重要,重要的是每個字母出現的次數
①統計兩個字串每個字母出現的次數,得到兩個陣列cnt1[26],cnt2[26]
②之後我們排序下,排序之後結果相同,對映的字元就相同
**:
1 #include 2 #include 3 #include4#define maxn 101 56
int cmp(const
void *a, const
void *b)710
/*11
int cmp(const void *a, const void *b)
1215
*/16
intmain()
1732
33//
排序34 qsort(cnt1,26,sizeof(cnt1[0]),cmp);//
qsort快速排序
35 qsort(cnt2,26,sizeof(cnt2[0
]),cmp);
3637
for(int i=0; i < 26; i++)
3844
}45 printf("
yes\n");
46}4748
return0;
49 }
例題4 1 古老的密碼
給定兩個長度相同且不超過100 的字串 判斷是否能把其中乙個字串的各個字母重排 然後對26個字母做乙個一一對映,使得兩個字串相同。例如 jwpudjstvp 重排 後可以得到wjdupsjpvt 然後把每個字母對映到到前乙個字母 得到victorious。輸入兩個字串 輸出yes 或者是 no 分析...
4 1 古老的密碼(UVa1339 《排序》
古羅馬帝國與各部門有乙個強有力的 系統,包括乙個秘密服務部門。重要的檔案以加密的形式傳送防止竊聽。在那個時代最流行的密碼被稱為替代密碼和置換密碼。例如,應用替代密碼,改變所有字母 a 到 y 字母表中的下乙個字母 注 z 變成 a 如 victorious 得到資訊是 wjdupsjpvt 置換密碼...
快速排序qsort的使用
表頭檔案 include 定義函式 void qsort void base,size t nmemb,size t size,int compar const void const void 函式說明 引數base指向欲排序的陣列開頭位址,引數nmemb代表陣列中的元素數量,每一元素的大小則由引數...