古老的密碼(Ancient Cipher)(函數做函數的參數)

2020-08-10 11:35:18

給定兩個長度相同且不超過100的字串,判斷是否能把其中一個字串的各個字母重排,然後對26個字幕做一個一一對映,使得兩個字串相同。
例如,JWPUDJSTVR重排後可以得到WJDUPSJPVT,然後把每個字母對映到他前一個字母(B->A,C->B,…Z->Y,A->Z)得到VICTORIOUS。
輸入兩個字串,輸出yes或no
c語言的stdlib.h中有一個叫qsort的庫函數,實現了著名的快速排序演算法。
宣告:

void qsort(void *base,size_t num,size_t size,int (*comparator)(const void*,const void*));

前三個參數分別爲待排序陣列的起始地址,元素個數和每個元素的大小,最後一個參數是一個指向函數的指針:int cmp(const void*,const void*) {...}
指向常數的「萬能的」指針:const void*
可以通過強制型別轉換變成任意型別的指針。
本題中,排序的物件爲整數陣列。

int cmp(const void *a,const void *b)
{
	return *(int *)a-*(int *)b;
}
//先把參數a,b轉化爲真實的型別,然後讓cmp函數當a<b,a=b和a>b時分別返回負數,0和正數即可。