#include #include char word[100][100]; int check[100], count = 0; int siritori(char *word, char *base, int *check, int n) { int i, tmp = 0, max = 0; for(i = 0; i < n; i++) { if(!strcmp(word, base + i * 100)) continue; printf("現在のword: %s\n", word); printf("候補のword: %s\n", base + i * 100); printf("i = %d, 末尾 = %c, 候補の先頭 = %c\n", i, *(word + strlen(word) - 1), *(base + (i * 100))); if((*(word + strlen(word) - 1) == *(base + (i * 100))) && (strlen(word) - 1 != i * 100) && *(check + i)) { puts("一致しました"); *(check + i) = 0; printf("check%d:%d\n", i, *(check + i)); printf("次のword: %s (i = %d)\n", base + i * 100, i); tmp = siritori(base + i * 100, base, check, n); if(tmp > max) { max = tmp; } *(check + i) = 1; printf("max:%d\n"); } } return max + 1; } int main(void) { int i = 0, n = 0, max = 0, tmp; char check[1000], buf[100][1000]; FILE *in; if((in = fopen("wordlist.txt", "r")) == NULL) { puts("wordlist.txtが読み込めませんでした"); exit(1); } while(!feof(in)) { fscanf(in, "%s", &word[i++]); n++; } fclose(in); for(i = 0; i < n; i++) { check[i] = 1; } printf("n = %d\n", n); for(i = 0; i < n; i++) { puts(word[i]); } for(i = 0; i < n; i++) { check[i] = 0; tmp = siritori(word[i], word[0], check, n); if(tmp > max) max = tmp; check[i] = 1; } printf("%d\n", max); return 0; }