int maxstring(char *a,int low,int high) { int mid=0,leftstring=0,rightstring=0,midstring=0,sum=0; if(high-1<=low) return (high-1==low?2:1); else if(high-1>low) { mid=(high+low)/2; leftstring=maxstring(a,low,mid); rightstring=maxstring(a,mid+1,high); midstring=crossmax(a,low,mid,high); sum=(leftstring>rightstring?leftstring:rightstring); } return (sum>midstring?sum:midstring); };
/* * Modify this in part B to accept command-line arguments. */ int main(int argc, char* argv[]) { char* strings[] = {"hello world!", "", "welcome to cs61c", "good day"}; printf("If the char is 'd', maxstring() should return 'good day'. Result:\n%s\n", maxstring(strings, 4, 'd')); printf("If the char is ' ', maxstring() should return 'welcome to cs61c'. Result:\n%s\n", maxstring(strings, 4, ' ')); printf("If the char is 'b', maxstring() should return ''. Result:\n%s\n", maxstring(strings, 4, 'b')); printf("If the char is 'o', maxstring() should return 'hello world!'. Result:\n%s\n", maxstring(strings, 4, 'o')); return 0; }
int main(){ //tmp value char* str1 = "garbage!"; char* str2 = "dog"; printf("The final string is: %s\n", maxstring(str1, str2)); return 0; }
int main(void) { int n=0,largest=0,largest1=0; FILE *fr=fopen("beads.in","r"),*fw=fopen("beads.out","w"); fscanf(fr,"%d",&n); char arr[n+1],arr1[2*n+1]; fscanf(fr,"%s",arr); //fread(arr,sizeof(arr),1,fr); largest=maxstring(arr,0,n-1); strcpy(arr1,arr); strcat(arr1,arr); largest1=crossmax(arr1,0,n-1,2*n-1); //fprintf(fw,"%d",largest); largest=(largest>largest1?largest:largest1); largest=(largest>n?n:largest); fprintf(fw,"%d\n",largest); return 0; }
void add_buffer(BufferInfo *infoptr, char *str, int partial) { char *q; Buffer *p; int len; /* Partial lines so append incoming data */ if(infoptr->partial) { if(partial) { debug(2, "add_buffer (partial): adding to line. This line is: partial"); } else { debug(2, "add_buffer (partial): adding to line. This line is: done"); } len = strlen(infoptr->tail->buf) + strlen(str); q = (char *)malloc(len + 1); if(!q) { msg("-- Malloc: Could not allocate socket output!"); return; } strcpy(q, infoptr->tail->buf); strcat(q, str); q[len] = '\0'; strfree(infoptr->tail->buf); infoptr->tail->buf = q; /* Are we newline terminated yet? */ infoptr->partial = partial; return; } /* New data coming in, set up linked list */ p = (Buffer *)malloc(sizeof(Buffer)); if(!p) { msg("-- Malloc: Could not allocate socket output!"); return; } if(!infoptr->tail) { infoptr->tail = p; infoptr->head = p; p->next = NULL; p->prev = NULL; } else { p->next = infoptr->tail; infoptr->tail->prev = p; p->prev = NULL; infoptr->tail = p; } ++info.lines_read; p->buf = maxstring(str); infoptr->partial = partial; if(partial) { debug(2, "add_buffer (newline): adding to line. This line is: partial"); } else { debug(2, "add_buffer (newline): adding to line. This line is: done"); } }