sangeet.kumar
BAN USER#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
char w[N][N] = {
"GKJSMOIUEW",
"ITFSOFCJFO",
"PAKJMWDRFA",
"MCHJOYIOPL",
"QWGTDXZEUI",
"AUTOMOBILE",
"XYZNIERUNE",
"TOYESBZCZR",
"LXACPTRWAA",
"MOMDADOOOR"
};
char *dict[] = {
"CAT",
"MOM",
"MOMO",
"AUTO",
"MOBILE",
"AUTOMOBILE",
"TON",
"RUN",
"OAA",
"ZROD",
"PAK",
"TOY",
"OIYOJ",
"CAR",
"BAT",
"PIG",
"PI",
};
void search_word(char *word)
{
int k;
int dsize = sizeof(dict) / sizeof(char *);
for (k = 0; k < dsize; k++) {
if (!strncmp(dict[k], word, strlen(dict[k])))
printf("Found : [%s]\n", dict[k]);
}
}
int main(int argc, char *argv[])
{
int x, y;
int i, j, k;
char word[N+1];
for (x = 0; x < N; x++) {
for (y = 0; y < N; y++) {
// Search left to right
for (i = x, j = y, k = 0; j < N; j++, k++)
word[k] = w[i][j];
word[k] = '\0';
search_word(word);
// Search right to left
for (i = x, j = y, k = 0; j >= 0; j--, k++)
word[k] = w[i][j];
word[k] = '\0';
search_word(word);
// Search top to bottom
for (i = x, j = y, k = 0; i < N; i++, k++)
word[k] = w[i][j];
word[k] = '\0';
search_word(word);
// Search bottom to top
for (i = x, j = y, k = 0; i >= 0; i--, k++)
word[k] = w[i][j];
word[k] = '\0';
search_word(word);
}
}
return 0;
}
#include <stdio.h>
int main(void)
{
int i, j;
int a[3][4] = {{3, 5, 7, 3}, {4, 5, 8, 1}, {6, 4, 5, 2}};
for (i=0; i<3; i++) {
int prev_index = 0;
int prev_length = 1;
int curr_index = 0;
int curr_length = 1;
for (j=1; j<4; j++) {
int diff = a[i][j] - a[i][j-1];
if (diff == 1 || diff == -1) {
curr_length++;
if (curr_length > prev_length) {
prev_index = curr_index;
prev_length = curr_length;
}
}
else {
curr_index = j;
curr_length = 1;
}
}
for (j = prev_index; j < (prev_length + prev_index); j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
Wrong question. Binary search is applicable only for the sorted array. Nothing better than linear search when array is not sorted.
- sangeet.kumar June 08, 2013