mtsuyugu #4719(2007/12/10 12:32 GMT) [ C ] Rating0/0=0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
#include <stdio.h> #include <stdlib.h> #include <string.h> char *lines[] = { "CBAACA", "ABCABC", "BCCBCA", "CCBBAB", NULL }; char *strrev( char *str ){ char *h, *t, tmp; if( !str ) return NULL; h = t = str; while( *t++ ); t-=2; while( h < t ){ tmp = *h; *h++ = *t; *t-- = tmp; } return str; } int search8way( char *target, char **lines ){ char *buf, *revstr; int i,j,m,n; int len = strlen(target); buf = (char *)malloc( sizeof(char) * strlen(target) + 1 ); revstr = (char *)malloc( sizeof(char) * strlen(target) + 1 ); if( !target || !revstr ){ free(target); free(revstr); return EXIT_FAILURE; } memset( buf, '\0', len ); strrev( strncpy(revstr, target, len) ); for( i = 0; lines[i]; i++ ){ for( j = 0; lines[i][j]; j++ ){ !strncmp( &lines[i][j], target, len ) && printf("(%d, %d), right\n", j, i); !strncmp( &lines[i][j], revstr, len ) && printf("(%d, %d), left\n", j+len-1, i); if( i < len - 1 ) continue; for( m = n = 0; m < len; m++, n++ ) buf[n] = lines[i-m][j]; !strncmp( buf, target, len ) && printf("(%d, %d), up\n", j, i); !strncmp( buf, revstr, len ) && printf("(%d, %d), down\n", j, i-len+1); for( m = n = 0; m < len; m++, n++ ) buf[n] = lines[i-m][j+m]; !strncmp( buf, target, len ) && printf("(%d, %d), right up\n", j, i); !strncmp( buf, revstr, len ) && printf("(%d, %d), left down\n", j+len-1, i-len+1); if( j < len - 1 ) continue; for( m = n = 0; m < len; m++, n++ ) buf[n] = lines[i-m][j-m]; !strncmp( buf, target, len ) && printf("(%d, %d), left up\n", j, i); !strncmp( buf, revstr, len ) && printf("(%d, %d), right down\n", j+len-1, i-len+1); } } free(target); free(revstr); return EXIT_SUCCESS; } int main( void ){ return search8way("ABC", lines); }
Rating0/0=0.00-0+
[ reply ]
mtsuyugu
#4719()
[
C
]
Rating0/0=0.00
#4624 を参考にして総当たりかつ上方向への検索としてみました。
Rating0/0=0.00-0+
[ reply ]