Professional Documents
Culture Documents
#include <iostream> cout << "Day co tong max =" << max << ", ";
{ {
int sum=0; }
int vt0=0,vt1=0,vt2=0; }
{ {
{ int n=6;
vt0=i; duyetall(a,n);
sum=a[i]; }
else {
sum=sum+a[i];
if(max<sum)
max=sum;
vt1=vt0;
vt2=i;
Bài 2 : Viết chương trình tìm dãy con có tổng lớn nhất (tìm tổng và in dãy con đó) bằng phương pháp
chia để trị.
#include <iostream> sum = 0;
{ sum+=a[i];
} }
Bai 3 Viết chương trình tìm dãy con có tổng lớn nhất (tìm tổng và in dãy con đó) bằng phương pháp quy
hoạch động
#include <iostream>
using namespace std;
int quyhoachdong(int a[],int n)
{
int sum=0;
int maxx=0;
for(int i=0;i<n;i++)
{
sum+=a[i];
sum=max(sum,0);
maxx=max(sum,maxx);
}
return maxx;
}
int main()
{
int s[6] = {-2, 11, -4, 13, -5, 2 };
int n = sizeof(s)/sizeof(s[0]);
cout<<"\nmax = "<<quyhoachdong(s, n);
}
Bài 4: Viết chương trình sắp xếp một dãy sử dụng thuật toán sắp xếp chọn.
#include <iostream> int main()
void xuat(int A[],int n){ int A[]={64, 25, 12, 22, 11};
{ sapxepchon(A,n);
cout<<A[i]<<"\t"; }
for(int i=0;i<n-1;i++)
int min = i;
for(int j=i+1;j<n;j++)
if(A[j]<A[min])
min=j;
swap(A[min],A[i]);
xuat(A,n);
Bài 5: Viết chương trình sắp xếp một dãy sử dụng thuật toán sắp xếp chèn
#include <iostream> while (j >= 0 && a[j] > key)
{ }
} }
} xuat(a,n);
{ int main()
int i, key, j; {
{ int n=sizeof(A)/sizeof(A[0]);
j = i-1; }
Bài 6: Viết chương trình sắp xếp một dãy sử dụng thuật toán sắp xếp trộn (merge sort)
#include<stdlib.h> void mergeSort(int arr[], int l, int r)
#include<iostream> {
{ int m = l+(r-l)/2;
cout<<endl;
i = 0; }
j = 0; int main()
k = l; {
while (i < n1 && j < n2) int arr[] = {12, 11, 13, 5, 6, 7};
i++;
else
j++; return 0;
} }
k++;
arr[k] = L[i];
i++;
k++;
}
arr[k] = R[j];
j++;
k++;
Bài 7: Viết chương trình sắp xếp một dãy sử dụng thuật toán heap sort.
#include <iostream> void heapSort(int arr[], int n)
int l = 2*i + 1; {
heapify(arr, i, 0);
largest = l; }
{ }
swap(arr[i], arr[largest]);
heapify(arr, n, largest); int main()
} {
int n = sizeof(arr)/sizeof(arr[0]);
xuat(arr, n);
heapSort(arr, n);
xuat(arr, n);
Bài 8: Sử dụng thuật toán chia để trị viết chương trình tính hàm an
#include <iostream>
if(n == 1) {
return a;
} else {
if(n % 2 == 0)
else
int main()
{
int a=2;
int n=6;
cout<<a<<"^"<<n<<" = "<<pow(a,n);
Bài 9: Bài toán chia bánh : Bài toán mô tả như sau: Có N chiếc bánh, mỗi chiếc bánh có bán kính là ri
(tương ứng với chiếc bánh thứ i). Tất cả N chiếc bánh có chiều cao bằng nhau và bằng 1. Cần phải chia
cắt N chiếc bánh thành F miếng bánh thỏa mãn điều kiện là F miếng bánh có thể tích là bằng nhau để
chia cho F người. Tìm thể tích lớn nhất của mỗi miếng bánh có thể chia được.
Bài 10: ATM with draw Cho các mệnh giá tiền: 1000, 2000, 3000, 5000, 1000.101 , 2000.101 , 3000.101 ,
5000.101 , 1000.102 , …., 1000.10c , 2000.10c , …., 5000.10c . c là số nguyên Nhập vào số tiền mặt W cần
rút. Viết chương trình cho biết số tờ rút là nhỏ nhất.
#include <iostream> void xuat(int atm[],int n)
#include <cmath> {
{ }
int vt=0; }
{ {
{ for(int i=0;i<n;i++)
{
atm[vt]=i*1000*pow(10,j);
int t=tien/atm[i];
vt++;
tien-=t*atm[i];
n++;
if(t>0)
}
cout<<"menh gia: "<<atm[i]<<"\
} tso luong: "<<t<<endl;
} }
void sapxep(int atm[],int n) }
{ int main()
for(int i=0;i<n-1;i++) {
{ int atm[100];
{ int n=0;
if(atm[i]<atm[j]) nhap(atm,c,n);
swap(atm[i],atm[j]); sapxep(atm,n);
} int tien;
} cin>>tien;
ruttien(atm,n,tien);
Bài 11: Bài toán trồng cây Cho n hạt giống có số ngày ra hoa tương ứng là d1, d2, …, dn. Một bác nông
dân trồng mỗi ngày một hạt giống. Viết chương trình tìm số ngày sớm nhất để bác nông dân tổ chức bữa
tiệc ngoài vườn khi tất cả các hạt giống này đã trưởng thành và nở hoa.
#include<iostream> void ThuTuTrong(Hoa hoa[],int n)
#include<string> {
char Ten[100]; {
{ }
for(int i = 1; i <= n; i++) cout<<"So ngay som nhat de tat ca hoa deu no
la:= "<<min + 1;
{
}
cout<<"Loai hat giong thu
"<<i<<" :\n"; int main()
fflush(stdin); int n;
SapXep(hoa,n);
}
cout<<"\n----------------------------------\n";
ThuTuTrong(hoa,n);
Greedy(hoa,n);
Bài 13: Cho 1 chuỗi (xâu kí tự). Một chuỗi con là chuỗi còn lại sau khi bỏ đi một hoặc vài kí tự từ xâu ban
đầu. Ví dụ x=”abcfghk”, nếu bỏ đi kí tự ‘b’ thì xâu con là ‘acfghk’. Nếu bỏ đi kí tự ‘bc’ và’gh’ thì xâu con là
‘afk’. Viết chương trình nhập vào hai xâu kí tự, in ra độ dài xâu con chung lớn nhất và xâu chung đó của
hai xâu vừa nhập. Ví dụ: hai xâu “BACDB” và “BDCB”, xâu con chung lớn nhất có độ dài là 3 và là “BCB”