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;
}
Exemplo n.º 2
0
/* 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);
}
Exemplo n.º 3
0
//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)); 
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
Arquivo: findmax.c Projeto: osgh/clang
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;
}
Exemplo n.º 7
0
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;
} 
Exemplo n.º 8
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;
}
Exemplo n.º 9
0
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;
}
Exemplo n.º 10
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;
}
Exemplo n.º 11
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);
}
Exemplo n.º 13
0
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;
	}
}
Exemplo n.º 14
0
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);
}
Exemplo n.º 15
0
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;
}
Exemplo n.º 16
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);
}
Exemplo n.º 17
0
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;
}
Exemplo n.º 18
0
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;
}
Exemplo n.º 19
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;
}
Exemplo n.º 21
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;
}
Exemplo n.º 22
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;
}
Exemplo n.º 23
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;
	}
}
Exemplo n.º 24
0
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;
}
Exemplo n.º 25
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;
}
Exemplo n.º 26
0
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;
}
Exemplo n.º 27
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;
}
Exemplo n.º 28
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);
}
Exemplo n.º 29
0
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);
    }
}