- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
#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;
}