这几天看网上对于北大oj系统上的1007题,网上大家用了C++和java解决了相关的问题,但是,一直没找到C语言的相关程序,闲来无事,就写了写,供大家参考。
题目是这样的,英文单词有26个英文字母,从这些字母中挑出一些组成一个字符串,让该字符串中的每一个字母与其后面的所有字母相比较,当发现该字母在字母表中排在与其比较的字母之后,则字符串整体权重加一。例如:ATR,A分别与T和R比较,字母表中TR都在A之后,所以不增加权重,T和R比较,R在字母表中排在T之后,所以,字符串权重加一。
程序要处理的是,在输入很多组相同长度的字符串中,将所有的字符串按照权重的大小排序输出。
我的程序也比较好理解,
初始化模块设计:
接受所要输入字符串的长度和字符串的个数:
计算所有的字符串的权重,并将权重存在对应的数组中:
最后利用冒泡排序的方法,每次找到权值最小的那个数字对应的角标,并将对应的字符串输出,同时,将该位的权重值变为一个很大的值,避免影响接下来的循环: