Các bài tập chuyên đề chia để trị cơ bản

 
Bài liên quan:
  1. Cách  trình bày mô tả một thuật toán chia để trị
  2. Trình bày cách tính độ phức tạp của một đoạn chương trình
  3. Các bài tập chuyên đề chia để trị cơ bản

 
#include <stdio.h>


int
Tong (int *a,int n){
if
(n==1)
return
a[0];
else
return
a[n-1]+Tong(a,n-1);

}

int
TongLe(int *a,int n){
if
(n==1){
if
(a[0]%2==0)
return
0;
else
return
a[0];
}

else if
(a[n-1]%2==0)
return
TongLe(a,n-1)+0;
else
return
TongLe(a,n-1)+a[n-1];
}


int
doicho(int &a,int &b){
int
t = a;
a = b;
b = t;
}


void
DaoMang(int *a,int i,int j){
// if (j-i+1==1)
// return;
if(j-i+1==2)
doicho(a[i],a[j]);
else if
(j-i+1>2){
doicho(a[i],a[j]);
DaoMang(a,i+1,j-1);
}
}


void
inMang(int *a,int n){
for
(int i=0;i<n;i++)
printf("%d ",a[i]);
}

int
main(){
int
*a =new int[6] {5,8,1,4,6,7};
printf("%d ",Tong(a,6));
printf("\n\n---\n\n");
printf("mang truoc khi dao: \n");
inMang(a,6);
printf("\nmag sau khi dao:\n");
DaoMang(a,0,5);
inMang(a,6);
return
0;
}

Bài liên quan

Bài liên quan