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

  • [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.

  • #2
    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);    
            }
        }

    Comment


    • #3
      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);

      Share to be shared !
      http://thientoan.info

      Comment


      • #4
        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.

        Comment


        • #5
          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));

          Comment


          • #6
            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;

            Comment


            • #7
              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;
                  }

              Comment


              • #8
                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.

                Comment

                LHQC

                Collapse
                Working...
                X