long long findmax (int depth, int level, int pos) { int curr_width = depth; int curr_start = series (depth - 1, TRI); int current = retval(depth, pos); // reached the end of this search if (level == 1) return current; // top of the pyramid if (depth < 2) return tri[0]; // far left edge if (pos == 1) return (findmax (depth - 1, level - 1, pos) + current); // far right edge if (pos == curr_width) return (findmax (depth - 1, level - 1, pos - 1) + current); // find the maximum value and return it current += maxlong ( // look left findmax (depth - 1, level - 1, pos-1), // look right findmax (depth - 1, level - 1, pos)); return current; }
/* recursive version. more elaborated version is found in problem67.c */ int findmax(const char triangle[][N], int row, int col) { int left, right; if (row == N) { return triangle[row][col]; } left = findmax(triangle, row+1, col); right = findmax(triangle, row+1, col+1); return triangle[row][col] + (left > right ? left : right); }
//four conditions //1.2. recursively run the bst to check its validation //3.4. root value should obey the rules bool isValidBST(TreeNode *root) { if(!root) return true; return isValidBST(root->left) && isValidBST(root->right) && (!root->left || (findmax(root->left) < root->val)) && (!root->right || (findmin(root->right) > root->val)); }
int main() { int a[10] = {12,23,34,45,56,67,78,11,22},k; findmax(a,10,&k); printf("Max:%d,k:%d\n",a[k],k+1); return 0; }
int main() { int a[10] = {12,23,45,56,78,89,11,22}, k; findmax(a, 10, &k); printf("最大元素为%d,其下标值为%d\n", a[k], k); return 0; }
node *deletenode(node *root,int data) { node *temp; if(root==NULL) printf("Element doesnot exist!!!"); else if(root->data > data) root->left=deletenode(root->left,data); else if(root->data < data) root->right=deletenode(root->right,data); else { if(root->left && root->right) { printf("\ntest"); temp=findmax(root->left); root->data=temp->data; root->left=deletenode(root->left,root->data); } else { temp=root; if(root->left) root=root->left; else if(root->right) root=root->right; else root=NULL; free(temp); } } return root; }
int main() { int i,j,a,b,Sum; while(scanf("%d %d",&N,&M)!=EOF) { memset(map,0,sizeof(map)); memset(last_y,-1,sizeof(last_y)); Sum=0; for(i=1;i<=M;i++) { scanf("%d",&a); for(j=0;j<a;j++) { scanf("%d",&b); map[b][i]=1; } } for(i=1;i<=N;i++) { if(findmax(i)) { memset(hav,0,sizeof(hav)); Sum++; } } printf("%d\n",Sum); } return 0; }
static int rem (BTree* a, int x) { if (isleaf(a)) { int pos; if (findpos(a,x,&pos)) delleft(a,pos); /* or delright */ else return 0; } else { int pos; if (findpos(a,x,&pos)) { BTree* l = findmax(a->p[pos]); a->k[pos] = l->k[l->n-1]; l->k[l->n-1] = x; } if (!rem(a->p[pos],x)) return 0; if (underflow(a->p[pos])) rearrange(a,pos); } return 1; }
int main() { char s[1000],*p; int stack[50]; while((fgets(s,sizeof(s),stdin))!=NULL) { p = strtok(s," "); int k=0; while(p!=NULL) { stack[k++] = atoi(p); p = strtok(NULL," "); } // print original one for(int i=0;i<k-1;i++) { printf("%d ",stack[i]); } printf("%d\n",stack[k-1]); int first_move = 1; for(int i=k;i>=1;i--) { MaxVal mv = findmax(stack,i); if(mv.pos!=i-1) { if(mv.pos!=0) { // biggest is in the middle // revolve to make the biggest to the leftmost position if(first_move) { printf("%d",k-mv.pos); //because we stored pancakes from left to right but it counts from right to left stating from 1 first_move = 0; } else { printf(" %d",k-mv.pos); //because we stored pancakes from left to right but it counts from right to left stating from 1 } revolve(stack,mv.pos); // revolve to make the biggest to current right position printf(" %d",k-i+1); revolve(stack,i-1); } else { // biggest is at the leftmost position, just need to revolve once to make it to the right position if(first_move) { printf("%d",k-i+1); first_move = 0; } else { printf(" %d",k-i+1); } revolve(stack,i-1); } } } if(first_move) printf("0\n"); // already sorted. else printf(" 0\n"); } return 0; }
int main(void) { int A[10]; init(A, 10); print(A, 10); printf("the max value is: %d\n", findmax(A, 0, 9)); return 0; }
int findmax(int *A, int a, int b) { if (a == b) { return A[a]; } int rmax; /* the remaining max value */ rmax = findmax(A, a + 1, b); return A[a] > rmax ? A[a] : rmax; }
node *findmax(node *root) { if(root==NULL) return NULL; else if(!root->right) return root; else return findmax(root->right); }
void sort(int *mas, int n) { int i, x, zn; for(i = 0; i < n; i++) { x = mas[i]; zn = findmax(mas, n, i); mas[i] = mas[zn]; mas[zn] = x; } }
link listselection(link h) { link max, t, out = NULL; while (h->next != NULL) { max = findmax(h); t = max->next; max->next = t->next; t->next =out; out = t; } h->next = out; return (h); }
int main(void) { int arr[10], i; for (i = 0; i < 10; i++) { scanf("%d", arr + i); } printf("max = %d\n", findmax(arr)); return 0; }
main() { int i,n,a[10]; printf("enter the size of array\n"); scanf("%d",&n); printf("enter the array\n"); for(i=0;i<n;i++) { scanf("%d",&a[i]); } findmax(a,n); }
int findmax(link head) { if (head->next == NULL) { return head->entry; } int rmax; /* remaining max */ int cmax ; /* current max */ cmax = head->entry; rmax = findmax(head->next); return cmax > rmax ? cmax : rmax; }
int main(int argc, char *argv[]) { int i, j; for (i = 0; i < 20; i++) for (j = 0; j < 20; j++) findmax(i, j); printf("%d\n", max); return 0; }
link listselection(link h) { node dummy(0); link head = &dummy, out = NULL; head->next = h; while (head->next != NULL) { link max = findmax(head), t = max->next; max->next = t->next; t->next = out; out = t; } return out; }
int main() { int n=20; int *a; a = (int*)malloc(n*sizeof(int)); for(int i=0;i<n;i++) a[i] = rand()%100; findmax(a,n); sortrest(a,n); show(a,n); return 0; }
int main() { int i; list_t l; l = list_init(); for (i = 10; i >= 0; i--) { list_insert_front(l, i); } list_print(l); printf("The max value is: %d\n", findmax(l->head)); list_finalize(&l); return 0; }
// hw 2-3 int main (int argc, char* argv[]) { int i, j, p, q; int len_arr = 6; int* id = new int[len_arr]; int* sz = new int[len_arr]; int sz_input[] = { 10, 0, 5, 0, 3, 3}; for (int i = 0; i<len_arr; i++) { id[i] = i; sz[i] = sz_input[i]; } while (cin >> p >> q) { for (i = p-1; i != id[i]; i = id[i]); for (j = q-1; j != id[j]; j = id[i]); if (i == j) { cout << findmax(sz, len_arr) << endl; continue; } if (sz[i] < sz[j]) { id[i] = id[j]; sz[j] += sz[i]; sz[i] = 0; } else { id[j] = id[i]; sz[i] += sz[j]; sz[j] = 0; } cout << findmax(sz, len_arr) << endl; } return 0; }
main() { int n,value; bst t=NULL,x; while(1) { printf("enter 1 to insert any number in the tree\n"); printf("enter 2 to find any number.\n"); printf("enter 3 to find minimum\n"); printf("enter 4 to find maximum\n"); printf("enter 5 to delete any number\n"); printf("enter 6 to exit\n "); scanf("%d",&n); if(n==1) { printf("Enter the number to insert : "); scanf("%d",&value); t=insert(value,t); // continue; } if(n==2) { printf("Enter the number to find : "); scanf("%d",&value); find (value,t); } if(n==3) {// printf("in min loop\n"); x=findmin(t); if(x!=NULL) printf("%d\n",x->item); } if(n==4) { x=findmax(t); if(x!=NULL) printf("%d\n",x->item); } if(n==5) { int value; printf("enter the number to be deleted : "); scanf("%d",&value); del(value,t); printf("the number is deleted\n"); } if(n==6) break; } }
int main(){ int i,T; float max,min; scanf("%d", &T); float* arr = malloc(sizeof(float*)*T); for (i = 0; i < T; i++){ scanf("%f", &arr[i]); } max = findmax(arr, T); min = findmin(arr, T); printf("%.2f", max-min); return 0; }
bool isBST(Node* root) { if (!root) return 1; if (root->left && findmax(root->left)->data > (root->data)) return 0; if (root->right && findmin(root->right)->data < (root->data)) return 0; if (!isBST(root->left) || !isBST(root->right)) return 0; return 1; }
int main() { int i,j,k; scanf("%d",&T); while(T-- && scanf("%d%d",&C,&R)!=EOF){ for(i=0;i<R;i++) scanf("%s",M[i]); memset(dp,0,sizeof(dp)); dp[0][0][0]=(M[0][0]==il)?1:0; for(i=1;i<=R+C-2;i++) for(j=0;j<=i&&j<C;j++) if(M[i-j][j]!='#' && (i-j)<R) for(k=0;k<=i&&k<C;k++) if(M[i-k][k]!='#' && (i-k)<R) dp[i][j][k]=findmax(i,j,k); printf("%d\n",dp[R+C-2][C-1][C-1]); } return 0; }
int findmax(int m) { int i; for(i=1;i<=M;i++) { if(!hav[i]&&map[m][i]) { hav[i]=1; if(last_y[i]==-1||findmax(last_y[i])) { last_y[i]=m; return 1; } } } return 0; }
main() { int a[20][20]; int i,j; for(i=0;i<20;i++) { for(j=0;j<20;j++) scanf("%d",&a[i][j]); } int max=0,p; for(i=0;i<20;i++) { for(j=0;j<20;j++) { p=findmax(a,i,j); if(p>max) max=p; } } printf("%d",max); }
int main() { clrscr(); int num_of_pages,k; int reference_string[20]; cout<<"Enter reference string "; for(int i=0; i<20; i++) { cin>>reference_string[i]; } cout<<"Enter the number of pages "; cin>>num_of_pages; page repr[10]; for(i=0; i<10; i++) { repr[i].number=-1; repr[i].time=0; } cout<<"The pages will be replaced as follows (-1 denotes empty slot)\n"; for(i=0; i<20; i++) { int temp=reference_string[i]; if(findrepr(repr,num_of_pages,temp)) { k=findrepr(repr,num_of_pages,temp); if(k!=0) repr[k-1].time=i+1; } else { int k=findmax(repr,num_of_pages,i); repr[k].number=temp; repr[k].time=i+1; print(repr,num_of_pages); cout<<"\n"; } } getch(); return 0; }
void main() { char ans='n'; printf("Want to create a BST (y/n) ? :"); scanf("%c",&ans); node *root=NULL; int data=0,count=0,k=0; while(ans=='y') { node *new_node; printf("\nEnter the element = "); scanf("%d",&data); new_node=get_node(data); if(root==NULL) root=new_node; else insert(root,new_node,data); printf("\nWant to add more elements(y/n)? : "); ans=getch(); } printf("\nThe BST created is: "); display(root); printf("\nsmallest node= %d",findmin(root)->data); printf("\nlargest node= %d",findmax(root)->data); printf("\nEnter the value of k for kth smallest node = "); scanf("%d",&k); findkthsmallest(root,k); printf("\nDo you want to delete a node (y/n)? :"); ans=getch(); if(ans=='y') { printf("\nEnter the element you want to delete = "); scanf("%d",&data); root=deletenode(root,data); printf("\nThe BST after deletion is: "); display(root); } }