字母重排(算法竞赛入门经典)
生活随笔
收集整理的這篇文章主要介紹了
字母重排(算法竞赛入门经典)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
輸入一個字典,用*****結(jié)尾,輸入若干單詞用00000結(jié)尾。每個單詞w,都需要在字典中找出所有可以用w的字母重排后得到的單詞,并按照字典序從小到大的順序在一行中輸出(如果不存在,輸出:( ,輸入單詞之間用空格或空行隔開,且所有輸入單詞都由不超過6個小寫字母組成,注意,字典中的單詞不一定按字典排列)。
輸入: tarp given score refund only trap work earn course pepper part *****
resco nfudre aptr sett oresuc 00000
輸出:
score
refund?
part tarp trap
:(
course
#include <iostream> #include <cstdlib> #include <cstring> using namespace std; //字符比較函數(shù) int CmpChar(const void* _a,const void* _b) {char* a=(char*)_a;char* b=(char*)_b;return *a-*b; } //字符串比較函數(shù) int CmpString(const void* _a,const void* _b) {char* a=(char*)_a;char* b=(char*)_b;return strcmp(a,b); }int main() {char word[2000][10];int len=0;while(1){scanf("%s",word[len]);if('*'==word[len][0]) //遇到結(jié)束標志結(jié)束循環(huán){break;}len++;}qsort(word,len,sizeof(word[0]),CmpString); //給所有單詞排序char sorted[2000][10];for(int i=0;i<len;i++){strcpy(sorted[i],word[i]);qsort(sorted[i],strlen(sorted[i]),sizeof(char),CmpChar); //給每個單詞排序}char str[10];while(scanf("%s",str)==1) //持續(xù)讀取到文件結(jié)尾{qsort(str,strlen(str),sizeof(char),CmpChar); //給輸入單詞排序int flag=0;for(int i=0;i<len;i++){if(0==strcmp(sorted[i],str)){flag=1;cout<<word[i]<<' '; //輸出原始單詞,而不是排序后的}}if(!flag){cout<<":(";}cout<<endl;}return 0; }
總結(jié)
以上是生活随笔為你收集整理的字母重排(算法竞赛入门经典)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python random模块(获取随机
- 下一篇: 区块链技术如何赋能公共资源招采管理服务?