码迷,mamicode.com
首页 > 其他好文 > 详细

《编程珠玑》--------变为词程序的实现

时间:2016-07-19 18:20:11      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

  上次看这本书已经不知道是什么时候了,最近翻看还是蛮有意思的,算法这种东西最好就是已玩的心态去学习或研究。不要太急功近利,或是为了

offer之类的,那种情况最好的办法是刷题,leetcode或者《剑指offer》,平时没什么事儿的时候可以随便拿个东西玩玩。

  作者的意图是 sign -> sort-> squash

一开始没太看明白,其实sign这一步骤就是排下序,如果第一次遇到这个问题,可以不看书,自己估计一下,什么情况下bcda 和 adbc 可以相等,想

一下就是排序,也就是作者说的,标记。

  sign代码如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WORDMAX 100

int charcomp(const void *x,const void *y){
	return *(char *)x - *(char *)y;
}

int main()
{   
    char word[WORDMAX], sig[WORDMAX];
    while (scanf("%s", word) != EOF) 
    {
        strcpy(sig, word);
        qsort(sig, strlen(sig), sizeof(char), charcomp);
        printf("%s %s\n", sig, word);
    }
    return 0;
}

 

squash的代码如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WORDMAX 100

int main(void){
	char word[WORDMAX],sig[WORDMAX],oldsig[WORDMAX];
	int linenum = 0;
	strcpy(oldsig,"");
	while(scanf("%s %s",sig,word)!=EOF){
		if(strcmp(oldsig,sig)!=0 && linenum>0)
				printf("\n");
		strcpy(oldsig,sig);
		linenum++;
		printf("%s ",word);
		
	}
	printf("\n");
	return 0;
}

sort在哪儿?

sort的代码已经封装好了,在控制台可以直接使用 也就是 sign < dic.txt | sort | squash > gramlist.txt

这里顺便说一下这个大于号 和 小于号 如果不用的话,sign 只是执行代码,输入部分默认从键盘输入,"<"的意思相当于dic.txt输入

同理,输出的时候。">"表示 “输出到” 的意思,如果不加的话,默认打印到屏幕。

linux中可以理解为一切都是文件,包括磁盘,屏幕,txt文档,只是指向不同,结果不同。

然后,就可以在gramlist文件中看到结论了。

 

其实一开始我一直在想sort的代码为什么木有,是我大意了,控制台试一下(path环境变量要配好,方便使用)

竟然windows也保留了man的用法,   >>man sort会列出相应用法和参数。  

今儿就写到这里,希望大家多多指正。

《编程珠玑》--------变为词程序的实现

标签:

原文地址:http://www.cnblogs.com/mulog/p/5685639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!