|
|
вернуться в форумwrong answer in test case 1 C language bruteforce Hello All, Can someone please help to understand the first test case or where I am going wrong in my code , I haven't used any algorithm, its just a brute force approach. ``` #include <stdio.h> #include <stdlib.h> char number[100]; char words[50001][101]; int main(int argc, char **argv) { int map_alphabet[26], i , j , c , n, master_begin_index, master_end_index ,output_buffer_index, pivot, number_len, is_candidate; char output_buffer[101]; map_alphabet['i'-97] = 1; map_alphabet['j'-97] = 1; map_alphabet['a'-97] = 2; map_alphabet['b'-97] = 2; map_alphabet['c'-97] = 2; map_alphabet['d'-97] = 3; map_alphabet['e'-97] = 3; map_alphabet['f'-97] = 3; map_alphabet['g'-97] = 4; map_alphabet['h'-97] = 4; map_alphabet['k'-97] = 5; map_alphabet['l'-97] = 5; map_alphabet['m'-97] = 6; map_alphabet['n'-97] = 6; map_alphabet['p'-97] = 7; map_alphabet['r'-97] = 7; map_alphabet['s'-97] = 7; map_alphabet['t'-97] = 8; map_alphabet['u'-97] = 8; map_alphabet['v'-97] = 8; map_alphabet['w'-97] = 9; map_alphabet['x'-97] = 9; map_alphabet['y'-97] = 9; map_alphabet['o'-97] = 0; map_alphabet['q'-97] = 0; map_alphabet['z'-97] = 0;
while( 1 ) { number_len = i = j = 0; while ( ( c = getchar() ) != '\n' && c != EOF) number[ i ++ ] = c; number[ i ] = '\0'; number_len = i; if ( number[0] == '-' && number[1] == '1') exit(0); scanf("%d",&n); // this is to flush stdin extra /n c = getchar(); i = 0; while ( n--) { j = 0; while ( ( c = getchar() ) != '\n') { words[i][j ++ ] = c; } words[i][j] = '\0'; i ++; }
master_begin_index = 0; master_end_index = number_len ; output_buffer_index = 0;
for ( i = 0 ; words[i][0] != '\0' ; i ++) { is_candidate = 1; pivot = master_begin_index; for ( j = 0 ; words[i][j] != '\0' ; j ++ ) { if ( map_alphabet[ words[i][j] - 97] != number[pivot] - 48 || pivot >= master_end_index) { is_candidate = 0; pivot = master_begin_index; break; } else { pivot ++; } } if (is_candidate) { master_begin_index = pivot; if ( output_buffer_index != 0) output_buffer[output_buffer_index ++] = ' '; for ( j = 0; words[i][j] != '\0'; j ++ ) { output_buffer[output_buffer_index ++] = words[i][j]; } }
} if ( pivot == master_end_index ) { for ( i = 0 ; i < output_buffer_index; i++ ) putchar(output_buffer[i]); putchar('\n'); } else printf("No solution.\n"); }
return 0; } ``` |
|
|