DIỄN ĐÀN TOÁN TIN
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.



 
CỔNG ĐHQGHN  XEM ĐIỂM  Trang ChínhTrang Chính  Latest imagesLatest images  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
Bài gửi sau cùng
Bài gửiNgười gửiThời gian
Happy new year 2013 Sat Dec 29, 2012 3:45 pm
Lâu rùi anh không thấy chú nào vào diễn đàn nữa Mon May 07, 2012 9:26 am
Happy new year 2012. Mon Jan 30, 2012 5:05 am
[color=red]Tin "Cực Hot" cho tất cả các bạn và người thân[/color] Wed Oct 05, 2011 4:44 am
Cách đổi lịch âm dương Mon Oct 03, 2011 2:24 am
lâu lâu rùi không lên diễn đàn lớp mình chém gió Fri Sep 30, 2011 9:44 am
TRIỂN LÃM DU HỌC NHẬT BẢN 2010 Vừa học vừa làm thu nhập 1700USD/1 tháng Wed Sep 28, 2011 8:00 am
Vừa đi làm, vừa làm cộng tác viên kiếm tiền... Sun Aug 07, 2011 11:37 am
:(((((((((((((((((((((((((((((((((((((((((((((((((((((((( Sat Aug 06, 2011 5:05 am
Khánh thành website học tiếng anh của Chiến Fri Aug 05, 2011 10:30 am
Funy : Counter strike =)) Mon Jul 25, 2011 10:43 am
Lịch học hè Fri Jul 08, 2011 4:11 pm
Tổng hợp ảnh 24/06/2011 - Lễ tốt nghiệp Wed Jul 06, 2011 9:17 am
Câu lạc bộ tiếng anh của Chiến - cơ hội giao lưu người bản xứ Tue Jun 28, 2011 9:41 pm
[K52A3] CÔNG BỐ TÀI CHÍNH QUỸ LỚP (10/03/2011) Thu Jun 23, 2011 5:35 pm
[VPK] DANH SÁCH TỐT NGHIỆP CHÍNH THỨC Thu Jun 23, 2011 5:31 pm
[VPK] LỄ TRAO BẰNG TỐT NGHIỆP Wed Jun 22, 2011 11:59 am
Pic 21/06 (new and hot) Wed Jun 22, 2011 10:28 am
Gameloft Hà Nội tuyển dụng Mon Jun 20, 2011 8:18 pm
[ CTCTSV ] 21 THÁNG 6 ĐI LẤY HỒ SƠ TỐT NGHIỆP Sat Jun 18, 2011 9:38 am

 

 Code Tổ Hợp chương 3, ACE góp ý nhé

Go down 
+4
pham_hanh
fanofyou
cuongcnb
vuthaihoc
8 posters

Bạn muốn tổ hợp cuối kỳ đưuọc mấy???
8->10
Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_lcap42%Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_rcap
 42% [ 5 ]
5->7
Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_lcap25%Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_rcap
 25% [ 3 ]
1->4
Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_lcap17%Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_rcap
 17% [ 2 ]
tùy... ông "thầy"
Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_lcap16%Code Tổ Hợp chương 3, ACE góp ý nhé I_vote_rcap
 16% [ 2 ]
Tổng số bầu chọn : 12
 
Poll closed

Tác giảThông điệp
vuthaihoc
Quan Nhất Phẩm
Quan Nhất Phẩm
vuthaihoc


Tổng số bài gửi : 275
Sinh nhật : 08/01/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyMon Jan 03, 2011 7:07 am

Thuật toán thay thế:
Code:

#include"conio.h"
#include"stdio.h"

int A[100],max[100],n;

void in()
{
    for(int i=1;i<=n;i++)
    {
        printf("%4d",A[i]);
    }
    puts("");
}

int lonhon(int x,int y)
{
    return x>y?x:y;
}

void tinhlaimax()
{
    for(int i=2;i<=n;i++)
    max[i]=lonhon(max[i-1],A[i-1]);
}
void khoitao()
{
    for(int i=1;i<=n;i++)
    {
        A[i]=1;
        max[i]=0;
    }
}
void thaythe()
{
    tinhlaimax();
    in();
    int i=n;
    while(A[i]==max[i]+1)i--;
    A[i]++;
    for(int j=i+1;j<=n;j++)A[j]=1;
}
int main()
{
    printf("Nhap n : ");
    scanf("%d",&n);
    khoitao();
    while(A[n]!=n)thaythe();
    in();
    getch();
    return 0;
}
//thac mac xin gui ve vuthaihoc.ttud@gmail.com :)

Thuật toán tu điển giảm:
Code:
#include"conio.h"
#include"stdio.h"
#include"math.h"

int a[100],n;

void khoitao()
{
    printf("Nhap so can phan tich n (n<100) : ");scanf("%d",&n);
    for(int i=1;i<100;i++)
    a[i]=0;
    a[1]=n;//nghiem dau tien
}
//in ra day hien tai
void in()
{
    int i=1;
    while(a[i]!=0){printf("%4d",a[i]);i++;}
    puts("");
}
//do dai day hien tai
int dodaiday()
{
    int i=1;
    while(a[i]>0)i++;
    return i-1;
}

int timp()
{
    int i=dodaiday();
    while(a[i]==1)i--;
    return i;
}

void giamtudien()

    in();
    int p=timp(),k=dodaiday();//tim vi tri p va do dai day hien tai
    int sum=a[p]+k-p;//tong can thay doi
    int ap=a[p]-1;//
    //xoa cac thanh phan sau vi tri p
    for(int j=p;j<=k;j++)a[j]=0;
    //xac dinh so lan ap lap lai
    int rp=sum / ap;
    //thay cac vi tri bang ap
    for(int j=0;j<rp;j++)a[p+j]=ap;
    //them phan du neu can
    int l=sum % ap;
    if(l>0)a[p+rp]=l;
}

int main()
{
    khoitao();
    while(a[1]>1)giamtudien();
    in();//in ra nghiem cuoi cung
    getch();
    return 0;
}
//thac mac xin gui ve vuthaihoc.ttud@gmail.com :)
Về Đầu Trang Go down
cuongcnb
Đại Tổng Quản
Đại Tổng Quản
cuongcnb


Tổng số bài gửi : 91
Sinh nhật : 22/12/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyMon Jan 03, 2011 7:06 pm

uh. Cảm ơn Học
Tớ có code khác
Thuật toán thay thế:
Code:

#include<stdio.h>
#include<conio.h>

int n;
int A[100];
int Max[100];

void khoi_tao()
{
    int i;
    for(i = 1; i<= n; i++)
      A[i] = 1;
}

void in_ket_qua()
{
    int i;
    for(i = 1; i <= n; i++)
    {
          printf("%3d", A[i]);
    }
    printf("\n");
}

void tim_max()
{
    Max[1] = 0;
    for(int i = 2; i <= n; i++)
      Max[i] = Max[i-1]>A[i-1]?Max[i-1]:A[i-1];
}

void sinh_phan_hoach()
{
    int i;
    while(A[n] != n)
    {
          in_ket_qua();
          tim_max();
         
          //tim phan phan hoach moi
          i = n;
          while(A[i] == Max[i] + 1)
          {
                      i --;
          }
         
          int p = i;
         
          // thay the
          A[p] = A[p] + 1;
          for(i = p + 1; i <= n; i++)
            A[i] = 1;         
    }
   
    //in ket qua khi A[n] = n
    in_ket_qua();
}

int main()
{
    printf("Nhap so phan tu n = ");
    scanf("%d", &n);
   
    khoi_tao();
    sinh_phan_hoach();
    getch();
}

Thuật toán tu điển giảm:

Code:

/*
  Phan tich so
*/

#include<stdio.h>
#include<conio.h>

int n;
int a[100];

void khoi_tao()
{
    int i;
    for(i = 2; i <= n; i++)
        a[i] = 0;
   
    a[1] = n;
}

void ket_qua()
{
    int i;
   
    for(i = 1; i <= n; i++)
        if(a[i] > 0)printf("%3d", a[i]);
   
    printf("\n");
}

//vi tri lon nhat i ma a[i] > 1
int tim_vi_tri_thay_doi()
{
    int i = n;
    while(a[i] <= 1)
      i --;
     
    return i;
}

//so cac phan tu khac 0
int do_dai()
{
    int d = 0;
   
    while(a[d + 1] != 0)
      {
              d ++;           
      }
   
    return d;
}

void phan_tich()
{
    int i;
    while(a[1] != 1)
    {
            ket_qua();
            // tim vi tri thay doi
            int p = tim_vi_tri_thay_doi();
            int k = do_dai();
            //thay doi
            int sum = a[p] + (k - p);
            a[p] = a[p] - 1;
           
            //them r ptu bang nhau va bang a[p]
            int r = sum / a[p];
            for(i = p + 1; i <= n; i++)
              if(i < p + r)a[i] = a[p];
              else a[i] = 0; // cac phan tu con lai bang 0
           
            //tin phan du
            int l = sum % a[p];
            if(l > 0) a[p+r] = l;
    }
   
    // in voi bo 1 1 1 11 1 ...
    ket_qua();
}

int main()
{
    printf("Nhap n = ");
    scanf("%d", &n);
   
    khoi_tao();
    phan_tich();
   
    getch();
}

Về Đầu Trang Go down
fanofyou
Trạng Nguyên
Trạng Nguyên
fanofyou


Tổng số bài gửi : 15
Sinh nhật : 19/02/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyMon Jan 03, 2011 11:32 pm

// thuật toán từ điển giảm code theo sách của thầy thành có chỉnh sửa cho đúng

#include<conio.h>
#include<stdio.h>
#include<math.h>
int s[100];
int n;
int r[100];
int sum;
int d,l;

void innit()
{
puts("Moi nhap so can phan tich");
scanf("%d",&n);

}
void in()
{
int i=1;
while(s[i]>0)
{
for(int j=1;j<=r[i];j++)
{
printf("%3d",s[i]);
}
i++;
}
puts("");
}
int mod(int x,int y)
{
int t;
int l= x/y;
t=x-l*y;
return t;
}

void process()
{

s[1]=n;
r[1]=1;
d=1;
in();
while(s[1]>1)
{
sum=0;
if(s[d]==1)
{
sum=sum+r[d];
r[d]=0;
d=d-1;

}
sum=sum+s[d];r[d]=r[d]-1; l=s[d]-1;
if(r[d]>0)d=d+1;
s[d]=l;r[d]= sum/l ;
l=mod(sum,l);
if(l!=0)
{
d++;
s[d]=l;
r[d]=1;
}
in();
}
}
int main()
{
innit();
process();
getch();
return 1;
}
Về Đầu Trang Go down
pham_hanh
:)) Hàng khủng :))
:)) Hàng khủng :))
pham_hanh


Tổng số bài gửi : 167
Sinh nhật : 10/11/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 8:38 am

chẳng hìu j cả, :s1 :s2 học vẹt ko biết vào fong thi có nhớ ko nữa :s4
Về Đầu Trang Go down
pham_hanh
:)) Hàng khủng :))
:)) Hàng khủng :))
pham_hanh


Tổng số bài gửi : 167
Sinh nhật : 10/11/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 8:44 am

Chúc mọi ng làm bài tốt nha :s23
Về Đầu Trang Go down
Tran Thuy Trang
Quan Chi Huyện
Quan Chi Huyện
Tran Thuy Trang


Tổng số bài gửi : 24
Sinh nhật : 23/10/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 3:26 pm

Hạnh ơi, học vẹt những cái gì đấy? hihi. Môn này vẫn chưa qua.lo quá
Về Đầu Trang Go down
pham_hanh
:)) Hàng khủng :))
:)) Hàng khủng :))
pham_hanh


Tổng số bài gửi : 167
Sinh nhật : 10/11/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 4:48 pm

đã gọi là học vẹt mà :s12 học xong rùi ứ có biết là mh vừa học cái j nữa s76:s
Về Đầu Trang Go down
chien2311
Enterprise Admin
Enterprise Admin
chien2311


Tổng số bài gửi : 1224
Sinh nhật : 23/11/1988

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 4:53 pm

code đọc khó hiểu quá :D
Về Đầu Trang Go down
Spammer
Quan Nhị Phẩm
Quan Nhị Phẩm
Spammer


Tổng số bài gửi : 103
Sinh nhật : 12/10/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 6:19 pm

Khuyen mai cai bai chia kẹo này ai cần thì lấy về dùng dễ lắm nó cũng chỉ giống thuật toán sinh tập con bằng phương pháp cộng 1 thôi chỉ có điều sau mỗi lần ta đánh giá sự chênh lệch số kẹo giữa 2 lớp và nghiệm sau tốt hơn nghiệm trước

// bài toan chia keo
có n goi kẹo mỗi gói có ki cái kẹo. chia cho 2 lớp mẫu giáo sao cho sự chênh lệch số kẹo giữa 2 lớp là ít nhất



// chia keo
#include "conio.h"
#include "stdio.h"
#include "math.h"

int n,sum;// sum tong so keo trong n goi
int k[20];// so luong keo moi goi
int a[20];// bien nhi phan =1 tuc la goi keo chia cho lop 1 = 0 chia cho lop 2

void nhap()
{
sum =0;
int tg;
printf("Nhap so goi keo n= ");
scanf("%d",&n);
printf("Nhap so luong keo moi goi:\n");
for(int i=1;i<=n;i++)
{

scanf("%d",&k[i]);
sum+=k[i];

}



}
void in()
{
for(int i=1;i<=n;i++)
printf("%4d",a[i]);
puts("");
}
void chiakeo()
{
int j;
int sum1,sum2,min,hieu;
min = 10000; //khoi tao gia tri min
for(int i=1;i<=n;i++)
a[i] =0;
do
{
sum1=0;// so keo chia cho lop 1
sum2=0;// so keo chia cho lop 2

if(hieu<min)
{
// cap nhat lai cach chia moi
min = hieu;
in();
}
j=n;

while(a[j]==1)
{
a[j]=0;
j--;
}
a[j]=1;
for(int i = 1;i<=n;i++)
{
if(a[i]==1)
sum1=sum1+k[i];
}
sum2 = sum - sum1;
hieu = fabs(sum1-sum2);
}
while(j!=0);

printf ("Cach chia sau cung la tot nhat");

}
int main()
{
nhap();
chiakeo();
getch();
printf("%d",sum);
return 0;
}



có gì sai sót các bác thông cảm
Về Đầu Trang Go down
Che..vankhe
Đại Tổng Quản
Đại Tổng Quản
Che..vankhe


Tổng số bài gửi : 129
Sinh nhật : 09/07/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 8:58 pm

[Bổ sung] . Tư tưởng của thuật toán trên là : Ta đánh số thứ tự các túi là 12..n. coi mỗ túi như một bit nhị phân.
Bài toán trên quy về tìm 1 tập con A của tập X (toàn bộ các túi) sao cho lưc lượng của A và X\A là chênh lệnh ít nhất
Loop :
=> tìm tất cả các dãy nhị phân a1,a2...an (ai=0/1) , mỗi khi tìm dc 1 nghiệm mới thì ta đánh giá độ tốt của nghiệm (hieu = |sum1-sum2| là tiêu chí đánh giá)
If (tốt hơn) lưu lại nghiệm.
Else bỏ qua
End loop.
In ra dãy nhị phân tốt nhất <=> cách chia tốt nhất.
Độ phức tạp = số các dãy nhị phân độ dài n * số phép toán cơ bản cần xử lí trong mỗi dãy = 2^n * n

Nếu dùng phương pháp thêm bớt để tìm nghiệm tối ưu thì độ phức tạp chỉ là 2^n - tốt hơn rất nhiều
Về Đầu Trang Go down
Spammer
Quan Nhị Phẩm
Quan Nhị Phẩm
Spammer


Tổng số bài gửi : 103
Sinh nhật : 12/10/1989

Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé EmptyTue Jan 04, 2011 9:25 pm

Che..vankhe đã viết:
[Bổ sung] . Tư tưởng của thuật toán trên là : Ta đánh số thứ tự các túi là 12..n. coi mỗ túi như một bit nhị phân.
Bài toán trên quy về tìm 1 tập con A của tập X (toàn bộ các túi) sao cho lưc lượng của A và X\A là chênh lệnh ít nhất
Loop :
=> tìm tất cả các dãy nhị phân a1,a2...an (ai=0/1) , mỗi khi tìm dc 1 nghiệm mới thì ta đánh giá độ tốt của nghiệm (hieu = |sum1-sum2| là tiêu chí đánh giá)
If (tốt hơn) lưu lại nghiệm.
Else bỏ qua
End loop.
In ra dãy nhị phân tốt nhất <=> cách chia tốt nhất.
Độ phức tạp = số các dãy nhị phân độ dài n * số phép toán cơ bản cần xử lí trong mỗi dãy = 2^n * n

Nếu dùng phương pháp thêm bớt để tìm nghiệm tối ưu thì độ phức tạp chỉ là 2^n - tốt hơn rất nhiều


Thì nói chung nó giống tương tự thuật toán tìm tất cả các tập con của tập n phần tử nhưng có thêm đánh giá nghiệm nào tốt hơn thôi.
Về Đầu Trang Go down
Sponsored content





Code Tổ Hợp chương 3, ACE góp ý nhé Empty
Bài gửiTiêu đề: Re: Code Tổ Hợp chương 3, ACE góp ý nhé   Code Tổ Hợp chương 3, ACE góp ý nhé Empty

Về Đầu Trang Go down
 
Code Tổ Hợp chương 3, ACE góp ý nhé
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Chương trình khuuyến mại học phí tháng 10 của vnSkin
» Chương trình quay màn hình Camstudio 6.0
» [ĐHKHTN + UOB] Chương trình vay vốn không lãi suất đợt 1
» Code Demo Thuật toán 1.1
» Hot Hot Chạy chương trình bài tập java ngày 23/10 trên DOS!!!!

Permissions in this forum:Bạn không có quyền trả lời bài viết
DIỄN ĐÀN TOÁN TIN :: CÁC VẤN ĐỀ CHUNG :: KÌ HỌC 1 NĂM THỨ 4 :: Tổ hợp-
Chuyển đến 
Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất