⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 anagrammanuel.c

📁 1995年ACM contest FINAL试题和源码
💻 C
字号:
/*1995-96 ACM International Collegiate Programming ContestSouthwestern European Regional ContestETH Zurich, SwitzerlandDecember 9, 1995Problem: AnagramIdea and Implementation:	Manuel Bleichenbacher, Head JudgeSource file: anagram.c / anagram.pInput file: anagram.inOutput file: anagram.out*/#include <stdio.h>#include <assert.h>int dummy;void sort_str(char* str);void permute_str(FILE* fout, char* str, int pos);int main(int argc, char* argv[]){	FILE *fin, *fout;	int i, n;	char str[1000];		fin = fopen("anagram.in", "r");	assert( fin != 0 );	fout = fopen("anagram.out", "w");	assert( fin != 0 );		dummy = fscanf(fin, "%d", &n);	assert( dummy == 1 );	for (i=0; i < n; i++) {	   dummy = fscanf(fin, "%s", str);	   assert(dummy == 1);	   sort_str( str );	   permute_str( fout, str, 0 );	}		fclose(fout);	fclose(fin);		return 0;}void sort_str(char* str){	/* brute force sorting */	char *p, c;	while (*str) {		p = str + 1;		while (*p) {			if (*p < *str) {				c = *p;				*p = *str;				*str = c;			}			p++;		}		str++;	}}void permute_str(FILE* fout, char *str, int pos){	char c;	int i;		if (!str[pos]) {		fprintf(fout, "%s\n", str);		return;	}		permute_str(fout, str, pos+1);	for (i=pos+1; str[i]; i++) {		if (str[pos] != str[i]) {			c = str[pos]; str[pos] = str[i]; str[i] = c;	/* swap */			permute_str(fout, str, pos+1);		}	}	c = str[pos];	for (i=pos+1; str[i]; i++)		str[i-1] = str[i];	str[i-1] = c;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -