Announcement

Collapse
No announcement yet.

[Lớp thuật toán hè 2015] Tài liệu và trao đổi buổi 8

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 13520564
    replied
    Tính lũy thừa - sử dụng Bitwise & đệ quy

    PHP Code:
    #include <stdio.h>

    int power(int numint n);

    void main()
    {
        
    printf("%d"power(315));
    }

    int power(int numint n)
    {
        if (
    == 1)
        {
            return 
    num;
        }
        else
        {
            
    int result 0;
            
    int i 1;
            
    int t 0;

            while ( 
    )        //find the maximum power of two
            
    {
                
    i;
                
    << 1;
            }

            
    1;
            
    result num;

            while ( 
    )
            {
                
    result result result;
                
    << 1;
            }                    
    //get num^t

            
    t;

            
    result result power(numi);    //Calculate the remaing (n - t)

            
    return result;
        }

    Last edited by 13520564; 28-07-2015, 18:23.

    Leave a comment:


  • 14520769
    replied
    Hàm luỹ thừa
    PHP Code:
    int pow(int xint n)
    {
        if (!
    n)    
            return 
    1;
        else if (
    == 1)
            return 
    x;
        else if (
    == 2)
            return 
    x;
        else 
        {
            if (!(
    2))
            {
                return 
    pow(pow(x2), 2);
            }
            else
                return 
    pow(pow(x2), 2) * x;
        }

    Leave a comment:


  • 13520376
    replied
    Max - Min
    PHP Code:
    #include <stdio.h>

    int max(int a[],int leftint right)
    {
        
    int max1,max2;
        if (
    left==right) return a[left];
        else
        {
            
    max1=max(a,left,(left+right)/2);
            
    max2=max(a,(left+right)/2+1,right);
            if(
    max1>max2) return max1;
            else return 
    max2;
        }
    }

    int min(int a[],int leftint right)
    {
        
    int min1,min2;
        if (
    left==right) return a[left];
        else
        {
            
    min1=min(a,left,(left+right)/2);
            
    min2=min(a,(left+right)/2+1,right);
            if(
    min1<min2) return min1;
            else return 
    min2;
        }
    }

    int main()
    {
        
    int a[1000],n,i;
        
    printf("Nhap n: "); scanf("%d",&n);
        for (
    i=0;i<n;i++)
            
    scanf("%d",&a[i]);
        
    printf("\nMax: %d",max(a,0,n-1));
        
    printf("\nMin: %d",min(a,0,n-1));
        return 
    0;

    Leave a comment:


  • 14520052
    replied
    PHP Code:
    #include <stdio.h>
    #include <stdlib.h>

    int Max(intA,int n)
    {
        if (
    n==1)
            return 
    A[0];
        else
        {
            
    int temp1temp2;
            
    temp1 Max (A,n/2);
            
    temp2 Max (A+n/2,n-n/2);
            return 
    temp1>temp2?temp1:temp2;
        }
    }

    main()
    {
        
    int n,i;
        
    scanf("%d",&n);
        
    int A[n];
        for (
    i=0;i<n;i++)
        {
            
    A[i] = rand()%100;
            
    printf("%d ",A[i]);    
        }
        
    printf("\nMax: %d",Max (A,n));

    Leave a comment:


  • 13521005
    replied
    tìm max bằng đệ quy

    Code:
    int MAX(int *a, int n)
    {
    	if (n == 1)
    		return *a;
    	int d = n / 2;
    	int m1 = MAX(a + d , d);
    	int m2 = MAX(a, d);
    	return max(m1, m2); // #define max(a , b) ((a > b) ? a : b)
    }
    Last edited by 13521005; 28-07-2015, 11:55.

    Leave a comment:


  • 14520981
    replied
    Chia tiền bằng pp đệ quy &amp; quay lui

    code mình dùng pp đệ quy quay lui, sử dụng 1 vòng for
    PHP Code:
    #include <stdio.h>
    int x[50], t[50], n1;

    void init()
    {
        
    printf("\nNhap n = ");
        
    scanf("%d", &n);
        
    x[0] = 1;
        
    t[0] = 0;
    }

    void output(int k)
    {
        
    printf("\n[%d]  %d = "hn);
        for (
    int i 1ki++)
            
    printf(" %d + "x[i]);
        
    printf("%d"x[k]);
        
    h++;
    }

    void Try(int i)
    {
        for (
    int j x[1]; <= ((t[1]) / 2); j++)
        {
            
    x[i] = j;
            
    t[i] = t[1] + j;
            Try(
    1);
        }
        
    x[i] = t[1];
        
    output(i);
    }

    int main()
    {
        
    init();
        Try(
    1);

    Leave a comment:


  • 14520052
    replied
    PHP Code:
    #include <iostream>
    using namespace std;
    #define MAX 10

    int n,m;
    int A[MAX];            //mang luu loai tien
    int result[MAX];    //mang luu ket qua

    void print(intnumber,int size);
    void back(int moneyint i);

    main()
    {
        
    cout<<"So tien: "cin>>n;
        
    cout<<"So loai tien: "cin>>m;
        for (
    int i=0i<mi++)
        {
            
    cout<<"A["<<i<<"] = ";
            
    cin>>A[i];
        }
        
    back(n,0);
    }

    void print(intnumber,int size)
    {
        
    int i;
        for (
    i=0;i<size-1;i++)
            
    printf("%2d x%2d +",A[i],number[i]);
        
    printf("%2d x%2d\n",A[i],number[i]);
    }

    void back(int moneyint i)
    {
        if (
    money==0)
            print(
    resultm);
        else if (
    i<m)
        {
            
    int temp money/A[i];
            for (
    int k=0k<=tempk++)
            {
                
    result[i] = k;
                
    back(money k*A[i], i+1);    
            }
        }

    Leave a comment:


  • [Lớp thuật toán hè 2015] Tài liệu và trao đổi buổi 8

    Ngày mai phòng máy sẽ mở cửa lúc 9:30 và học lúc 10:00.
    Các bạn sẽ tiếp tục làm về đệ qui.

LHQC

Collapse
Working...
X