Professional Documents
Culture Documents
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[]={-2 , 11, -4, 13, -5 ,2};
int n= 6;
int maxSum = INT_MIN;
for(int i=0 ;i<=n-1;i++){
int sum=0;
for(int j=i ; j<n;j++){
sum +=a[j];
if(sum > maxSum) maxSum = sum;
}
}
cout<<"Trong luong day con lon nhat = "<<maxSum<<endl;
return 0;
}
~ DYNAMIC PROGRAMING
#include <bits/stdc++.h>
void findSubArrayMax() {
int best = INT_MIN, sum = 0;
for (int i = 0; i < n; i++) {
sum = max(arr[i], sum + arr[i]);
best = max(best, sum);
}
cout << best << "\n";
}
void findSubArrayMaxWithIndices() {
int best = INT_MIN, sum = 0;
int best_start = 0, best_end = 0, current_start = 0;
for (int i = 0; i < n; i++) {
if (sum + arr[i] < arr[i]) {
current_start = i;
sum = arr[i];
} else {
sum += arr[i];
}
int main() {
findSubArrayMax();
findSubArrayMaxWithIndices();
}
#include <bits/stdc++.h>
using namespace std;
}
}*/
void DuyetToanBo()
{
void DeQuy()
//recursive
{
int maxSum = maxSub(a,0,n-1);
cout<<"PP De Quy : Trong luong day con lon nhat =
"<<maxSum<<endl;
}
void DynamicPrograming()
{
int ei = a[0];
int si = a[0];
for( int i = 1; i <= n-1 ; i++)
{
ei = max(a[i],a[i]+ei);
si = max(si,ei);
}
cout<<"Dynamic Programing : Trong luong day con lon nhat =
"<<si<<endl;
}
int main(){
// XuatMang(a, n);
cout<<"------------------------------------"<<endl;
cout<<"------------------------------------"<<endl;
~ Fibonaci( Recursion)
#include<stdio.h>
#include<iostream>
int F(int n)
{
if (n ==0 ) return 0;
if (n ==1 ) return 1;
return F(n-1) + F(n-2);
}
int main(){
bool ok[1000][1000];
ll dp[1000][1000];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
dp[0][0] = 1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(!ok[i][j]) dp[i][j] = 0;
else {
if(i > 0) dp[i][j] += dp[i - 1][j];
if(j > 0) dp[i][j] += dp[i][j - 1];
dp[i][j] %= 1000000007;
}
}
}
return 0;
}
if(A[i][j] == 1){
return 0 ;
}
// base case
if(i == r-1 && j == c-1){
return 1 ;
}
return UniquePathHelper(i+1, j, r, c, A) +
UniquePathHelper(i, j+1, r, c, A) ;
}
int uniquePathsWithObstacles(vector<vector<int>>& A)
{
return UniquePathHelper(0, 0, r, c, A) ;
}
// Driver code
int main()
{
vector<vector<int>> A = { { 0, 0, 0 },
{ 0, 1, 0 },
{ 0, 0, 0 } };
~ Recursion
#include<stdio.h>
#include<iostream>
int size;
int helperProd(int list[],int k)
{
//base case:
if( k == size -1)
return list[k];
else //Recursive case:
return helperProd(list, k+1)*list[k];
}
int main(){
#include<bits/stdc++.h>
//cach 1
int sum(int list[], int k) {
if ( k==n-1 ){
return A[k];
}
return list[k] + sum(list, k+1);
}
//cach 2
/*int sum2( int list[], int k)
{
if( k = 0){
return A[0];
}
return sum2(A , k-1) + A[k] ;
} */
int main(){
cout <<"Tong can tinh = " << sum(A, 0) << endl;
cout <<"---------------"<<endl;
}
~ Palindrome
#include<stdio.h>
int main(){
int n = 5;
char str[5] = "abcba";
printf("%d" , Palindrome( 0 , n-1 , str));
~ Hanoi Town
#include<bits/stdc++.h>
using namespace std;
{i++;
cout<<i<<" Dich chuyen dia tu coc: "<<start<<" den coc:
"<<finish<<endl;
}
else{
HanoiTower (n-1, start, spare, finish);
HanoiTower (1, start,finish,spare);
HanoiTower (n-1, spare,finish, start);
}
}
int main()
{ int n;
printf("Nhap n = "); scanf("%d",&n);
HanoiTower(n,'a' , 'b' , 'c');
cout<<"Tong so lan di chuyen dia = "<<i<<endl;
return 0;
}
~ Liệt kê hoán vị 1
#include<stdio.h>
int a[100];
int n,m;
void Record()
{
//printf out solutsion
int i;
for (i=1 ; i<=n; i++ ) printf(" %d ",a[i]);
printf("\n");
}
void Try(int k)
{ //Sk = {1,2,3,..n} \ {a[1], a[2], ... a[k-1]
for (int y = 1; y<=n ; y++)
if (check(y,k) == 1)
{
a[k] = y;
if (k == n) Record();
else Try(k+1);
}
}
int main()
{
n = 4; Try(1); // xay dung thanh phan dau tien cua loi giai
}
~ Liệt kê hoán vị 2
#include<stdio.h>
int a[100],n,m,used[100];
void Record(){
int i;
for(i=1;i<=n;i++) printf("%d ", a[i]);
printf("\n");
}
int main(){
n=4;
for(int i=1;i<=n;i++) used[i]=0;
Try(1);
}
#include<stdio.h>
int a[100];
int n;
void Record()
{
//printf out solutsion
int i;
for (i=1 ; i<=n; i++ ) printf(" %d",a[i]);
printf("\n");
}
void Try(int k)
{ //Sk = {0,1}
for (int y = 0; y<=1 ; y++)
{
a[k] = y;
if (k == n) Record();
else Try(k+1);
}
}
int main()
{
n = 5; Try(1); // xay dung thanh phan dau tien cua loi giai
}
#include<stdio.h>
int a[100];
int n,m;
void Record()
{
//printf out solutsion
int i;
for (i=1 ; i<=m; i++ ) printf(" %d ",a[i]);
printf("\n");
}
void Try(int k)
{ //Sk={ a[k-1]+1, a[k-1] +2,...., n-m+k}
for (int y = a[k-1]+1; y<=n-m+k ; y++)
{
a[k] = y;
if (k == m) Record();
else Try(k+1);
}
}
int main()
{
n = 6; m=4 ; Try(1); // xay dung thanh phan dau tien cua loi
giai
}
~ Quay lui
#include<stdio.h>
int a[100];
int n;
void Record()
{
//printf out solutsion
int i;
for (i=1 ; i<=n; i++ ) printf("%d ",a[i]);
printf("\n");
}
void Try(int k)
{
for (int y = 0; y<=1 ; y++)
{
a[k] = y;
if (k == n) Record();
else Try(k+1);
}
}
int main()
{
n = 3; Try(1); // xay dung thanh phan dau tien cua loi giai
}
#include<stdio.h>
int main(){
int A[] = { 5, 10, 12, 15 ,4};
int rows=5;
printf(" address contents\n");
for ( int i = 0; i < rows ; i++)
printf(" %8u %5d\n", &A[i] , A[i]);
#include<stdio.h>
#include<iostream>
using namespace std;
}
int main()
{
int A[] = {1 , 2 ,3 ,4, 10};
int n =5;
int i=3;
Delete(A , i , n);
n = n-1;
for (int k = 0; k <=n ;k++)
cout<<A[k]<<" ";
}