字符串-409 - Excuses, Excuses!

題目大意:自動檢測爛藉口,根據關鍵詞判斷哪些理由是蹩腳的藉口:關鍵詞出現得越多,說明藉口越蹩腳,輸出最爛的藉口

解題過程:2次compiler error,因爲使用了strlwr()函數,不是標準C庫函數,只在VC中可以用,但是DEV_C++通過了。。改成tolower()函數後,一次AC

正確代碼:

# include <cstdio>
# include <ctime>
# include <cmath>
# include <iostream>
# include <fstream>
# include <cstring>
# include <ctype.h> 
# include <cstdlib>
# include <string>
#define fin cin
#define fout cout

using namespace std;

//ifstream fin("in.txt");
//ofstream fout("out.txt");

struct excuse0{
	char origine[100];
	char word[70][20];
	int numofkey,numofword;
};
char keyword[20][20];
excuse0 excuse[20];

int cmp(const void* a,const void * b){
	return (*(excuse0*)b).numofkey - (*(excuse0*)a).numofkey;
}
int getkeyword(char (* keyword)[20],excuse0 excuse,int k){
	int num=0;
	for(int i=0;i<k;i++){
		for(int j=0;j<excuse.numofword;j++){
			if(strcmp(keyword[i],excuse.word[j])==0) num++;
		}
	}
	return num;
}

void reverse(char * word){
	for(int i=0;i<strlen(word);i++){
		word[i]=tolower(word[i]);
	}
}

int main()
{
	int k,e,numofset=0;
	char temp[100];
	while(fin>>k>>e){
		numofset++;
		for(int i=0;i<k;i++){
			fin>>keyword[i];
		}
		fin.getline(temp,100); 
		for(int i=0;i<e;i++){
			fin.getline(temp,100);
			strcpy(excuse[i].origine,temp);
		//	strlwr(temp);
			excuse[i].numofkey=excuse[i].numofword=0;
			int j,m;
			for(j=0;j<strlen(temp);j++){
				if(isalpha(temp[j])){
					for(m=j;m<strlen(temp);m++){
						if(!isalpha(temp[m])) break;
					}
					strncpy(excuse[i].word[excuse[i].numofword],temp+j,m-j);
					excuse[i].word[excuse[i].numofword][m-j]='\0';
					excuse[i].numofword++;
				}
			}
			//*
			for(j=0;j<excuse[i].numofword;j++){
				reverse(excuse[i].word[j]);
			}//*/
		}
		
		for(int i=0;i<e;i++){
			excuse[i].numofkey=getkeyword(keyword,excuse[i],k);
		}
		
		qsort(excuse,e,sizeof(excuse[0]),cmp);
		int max=excuse[0].numofkey;
		fout<<"Excuse Set #"<<numofset<<endl;
		for(int i=0;i<e;i++){
			if(excuse[i].numofkey<max) break;
			fout<<excuse[i].origine<<endl;
		}
		fout<<endl;
	}
	
	return 0;
 } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章