author: frank
描述:
輸入乙個字串,輸出該字串的字元的所有的排列,例如輸入abc輸出為6個排列:abc, acb, bca, bac, cab,cba。
分析:
以abcd這個含有4個字元的字串為例,對於其排列,首先排在第一位的字元可能為a,b,c,d四種情況,如果第一位是a,則後面3位是bcd的排列,同樣地對於bcd的排列,排在第一位的字元有三種情況。可以用遞迴的方法來實現!
首先,求所有可能出現在第一位置的字元,即把第乙個字元逐個和後面所有的字元交換。對於除第乙個字元外的其他剩餘字元,用同樣的方法。具體請看**實現:
void permutation(char* pstr,char* pbegin)
}
測試:
更簡潔的乙個解法:
void swap(vector& vec, int idx1, int idx2)
int temp = vec[idx1];
vec[idx1] = vec[idx2];
vec[idx2] = temp;
}//vec:儲存char,
//stidx:關注vec[stidx]到vec[vec.size-1]
//pre_vec:做快取
//例如,abc,先關注,以b開頭的,則pre_vec.push_back(b), 然後只需求解ac這兩個字元總共有多少個組合即可。
void findcombina(vector& vec, int stidx, vector& pre_vec) ;
vectorpre_vec;
findcombina(vec,0, pre_vec);
return 1;
}
參考:
《劍指offer》
平面設計的基本功
昨天下午,北服 佛萊士國際學院電腦美術設計專業的五位應屆畢業生來工作室參觀。他們中可能會有一或二位學生在今後的三個月裡來工作室實習。這五位青年的導師詹姆士 james blair thompson 希望他們在今後的工作中能繼續學習到有關設計的實用知識。五位青年對工作室很感興趣,東瞧西看了一大陣子,最...
平面設計的基本功
昨天下午,北服 佛萊士國際學院電腦美術設計專業的五位應屆畢業生來工作室參觀。他們中可能會有一或二位學生在今後的三個月裡來工作室實習。這五位青年的導師詹姆士 james blair thompson 希望他們在今後的工作中能繼續學習到有關設計的實用知識。五位青年對工作室很感興趣,東瞧西看了一大陣子,最...
中小學藝術教師基本功大賽
2015年6月,上海市首屆中小學藝術教師基本功大賽新聞通氣會在徐匯中學舉行。經過近三個月的籌備與評比,藝術 美術三門學科的比賽順利落幕。徐匯中學青年教師陳翔代表徐匯區參加美術學科比賽。陳翔老師本著對藝術教育的熱愛 對學生的真誠 以美育人 的宗旨,全心在教師的崗位上投入自己的熱忱,曾獲得2014年徐匯...