トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

2002dc1.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#define N 38
#define NK 26

char *kan[]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n",
				"o","p","q","r","s","t","u","v","w","x","y","z",
				"ld", "mb", "mp", "nc", "nd", "ng", "nt", "nw", "ps", "qu", "cw", "ts"};

int nkan[N][N]={0};

int main(void)
{
	int i,j,k,n,p;
	int len, flag, no, max;
	char buf[100],nimoji[3];
/*
	for(i=0; i<N; i++)
		printf("%s ", kan[i]);
	printf("\n");
*/
	
	gets(buf);
	n=atoi(buf);
	
	for(i=0; i<n; i++){
		gets(buf);
		
		len=strlen(buf);
		p=0;

//		printf("%s (%d)\n", buf, len);

		while(p<len){
//			printf("%d\n",p);
			nimoji[0]=buf[p];
			nimoji[1]=buf[p+1];
			nimoji[2]='\0';
			if(buf[p]==' '){
				p++;
			}else{
				flag=0;
				for(j=NK; j<N; j++){	// kanglish2文字と比較する
					if(!strcmp(nimoji,kan[j])){ // 1文字がkanglish2文字と同じだったら
						p++;p++;
						nimoji[0]=buf[p];
						nimoji[1]=buf[p+1];
						nimoji[2]='\0';
						for(k=NK; k<N; k++){
							if(!strcmp(nimoji,kan[k])){ // 次の2文字がkanglish2文字と同じだったら
								nkan[j][k]++;
								flag=1;
							}
						}
						if(!flag){	// 1文字目kanglish2で、2文字目kanglish2 じゃないとき
							nimoji[1]='\0';
							for(k=0; k<NK; k++){
								if(!strcmp(nimoji,kan[k])){ // 次の2文字がkanglish1文字と同じだったら
									nkan[j][k]++;
									flag=1;
								}
							}
						}
					}
				}
				if(!flag){	//1文字目kanglish2じゃないとき
					nimoji[1]='\0';
					flag=0;
					for(j=0; j<NK; j++){	// kanglish1文字と比較する
						if(!strcmp(nimoji,kan[j])){ // 1文字がkanglish1文字と同じだったら
							p++;
							nimoji[0]=buf[p];
							nimoji[1]=buf[p+1];
							nimoji[2]='\0';
							for(k=NK; k<N; k++){
								if(!strcmp(nimoji,kan[k])){ // 次の2文字がkanglish2文字と同じだったら
									nkan[j][k]++;
									flag=1;
								}
							}
							if(!flag){	// 1文字目kanglish2で、2文字目kanglish2 じゃないとき
								nimoji[1]='\0';
								for(k=0; k<NK; k++){
									if(!strcmp(nimoji,kan[k])){ // 次の2文字がkanglish1文字と同じだったら
										nkan[j][k]++;
									}
								}
							}
						}
					}
				}

			}
		}
	}
	
	for(i=0; i<N; i++){
		no=0;
		max=0;
		for(j=0; j<N; j++){
			if(nkan[i][j]>max){
				max=nkan[i][j];
				no=j;
			}
		}
		printf("%s %s %d\n", kan[i], kan[no], max);
	}

	return 0;
}