Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Mời tài trợ sinh nhật diễn đàn 8 năm

Tìm HD - Phần mềm tìm và xem phim HD miễn phí

Đăng ký tham gia offline VN-Zoom 8 năm tại HCM

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tài trợ VNZ Siêu phẩm Tân Kiếm Thế chibi 3D mới

Tuyển BQT VN-Zoom
kết quả từ 1 tới 4 trên 4

Đề tài: Bài toán Cái Túi

  1. #1
    KHH's Avatar
    KHH
    KHH vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    May 2009
    Đến từ
    Ha Noi, Vietnam, Vietnam
    Bài
    254
    Cảm ơn
    152
    Điểm
    310/51 bài viết
    VR power
    0

    Default Bài toán Cái Túi

    Có ít code chia sẻ cho ae nào cần thì dễ dang tìm kiếm và tham khảo.
    Ai không cần đừng chém nha

    PHP Code:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    #define MAX 256
    #define maxk 50
    int n,W,k;
    int Tongtrongluong;
    int Tonggiatri;
    float Giatamthoi;
    int xtemp[MAX];
    typedef struct{
    char Ten[50];
    int Trong_luong,Gia_tri;
    float Don_gia// dung de sap xep gia tri cac do vat theo thu tu khong tang
               // cua c[i]/a[i]
    float Phuong_an;
    float Gia_tri_vat;
    }
    Do_vat;
    Do_vat Ds_vat[MAX];

    //Lay du lieu tu file INPUT.txt :

    int Lay_dulieu(char *duongdan)
    {
    FILE *f;
    f=fopen("input.txt","r+");
    if(
    f==NULL)
    {
    printf("\n  Khong tim duoc file \n");

    return 
    1; }
    else{
    char s[100];
    fgets(s,100,f);
    fscanf(f,"%d",&W);
    printf("\t\t Trong luong toi da cua cai tui la W=%d\n",W);
    printf("\n Danh sach do vat khi nhap vao\n\n");
    while(!
    feof(f)&&k<=maxk){
    fscanf(f,"%s%d%d",&(Ds_vat[k].Ten),&(Ds_vat[k].Trong_luong),&(Ds_vat[k].Gia_tri));
    if(
    Ds_vat[k].Trong_luong){
    Ds_vat[k].Don_gia=float(Ds_vat[k].Gia_tri)/float(Ds_vat[k].Trong_luong);
    printf("\n- Do Vat %s co trong luong g= %d, gia tri v= %d, don gia= %.1f\n",Ds_vat[k].Ten,Ds_vat[k].Trong_luong,Ds_vat[k].Gia_tri,Ds_vat[k].Don_gia);
    k++;
    }
    }
    if(
    k==maxk)
    printf("\n\tChi lay %d do vat",n);
    printf("\n\n\t\t Danh sach co n = %d loai do vat.",k);
    n=k;
    fclose(f);
    return 
    0;
    }
    }

    //Sap xep lai danh sach do vat theo thu tu giam dan cua don gia.

    void Sap_xep(){
    Do_vat temp;
    int i;
    for(
    i=0;i<n-1;i++)
    Ds_vat[i].Don_gia=float(Ds_vat[i].Gia_tri)/float(Ds_vat[i].Trong_luong);
    for(
    i=0;i<n;i++)
    for (
    int j=i+1;j<;j++)
    {
    if(
    Ds_vat[i].Don_gia<Ds_vat[j].Don_gia)
    {
    temp=Ds_vat[i];
    Ds_vat[i]=Ds_vat[j];
    Ds_vat[j]=temp;
    }
    }

    printf("\n Danh sach do vat sau khi sap xep theo thu tu giam dan cua don gia\n\n\n");
    for(
    i=0;i<n;i++){
    printf("- Do vat %s co trong luong g= %d, gia tri v= %d, don gia: %.1f\n\n",Ds_vat[i].Ten,Ds_vat[i].Trong_luong,Ds_vat[i].Gia_tri,Ds_vat[i].Don_gia);
    Ds_vat[n].Gia_tri=0;
    for (
    int l=0;l<;l++ )
    {
    xtemp[l]=0;
    }
    }
    }

    //Tong trong luong

    void Tong_trong_luong(){
    float Phuong_anTrong_luong;
    for (
    int i=0;i<=n;i++){
    Trong_luong=float(-Phuong_an*Ds_vat[i].Trong_luong);
    }
    printf("\n - Trong luong con lai cua cai tui: W = %3.1f",Trong_luong);
    }

    //Ket qua in ra man hinh
    void Ket_qua(){
    float Phuong_an;
    float gt_toiuu=0;
    printf("\n - Phuong an tot nhat:\n");
    for(
    int i=0;i<n;i++)
    {
    Phuong_an=float (W/Ds_vat[i].Trong_luong);
    W=int(W-Ds_vat[i].Trong_luong*Phuong_an);
    Ds_vat[i].Gia_tri_vat= (Phuong_an*Ds_vat[i].Gia_tri);
    gt_toiuu+=Ds_vat[i].Gia_tri_vat;
    printf("\t\t\t\t* Chon %.f do vat loai %s \n",Phuong_an,Ds_vat[i].Ten);
    printf("\t\t\t\t - Gia tri vat %s: v = %.f\n\n",Ds_vat[i].Ten,Ds_vat[i].Gia_tri_vat);

    }
    printf("\n - Gia tri toi uu la : f*=%3.1f",gt_toiuu);
    }

    //Chuong trinh chinh

    int main()
    {
    printf("\n\t\t\t\t * * *\n");
    printf("\n\t\t\t KET QUA BAI TOAN CAI TUI \n\n");

    char *pa ="INPUT.txt";
    Lay_dulieu(pa);
    Sap_xep();
    Ket_qua();
    Tong_trong_luong();
    getch();
    return 
    0;

    File input:
    4
    8
    x1 2 3
    x2 5 10
    x3 4 6
    x4 3 5
    Vũ trụ vốn chìm trong tăm tối,
    Newton bước ra ánh sáng tràn đầy.
    Rồi Einstein với nụ cười hóm hỉnh,
    Vũ trụ lại rơi vào bí ẩn mông lung.

  2. Có 3 thành viên cảm ơn KHH cho bài viết này:
    auauau97 (24-10-2011), nklinh (18-12-2010), Tung_Huynh (18-12-2010)

  3. #2
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.777
    Cảm ơn
    1.540
    Điểm
    4.122/2.748 bài viết
    VR power
    0

    Default

    Mềnh toàn gọi là bài toán thằng ăn trộm
    ăn trộm sao cho khối lượng nhỏ mà giá trị lớn

  4. #3
    KHH's Avatar
    KHH
    KHH vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    May 2009
    Đến từ
    Ha Noi, Vietnam, Vietnam
    Bài
    254
    Cảm ơn
    152
    Điểm
    310/51 bài viết
    VR power
    0

    Default

    Trích Tung_Huynh View Post
    Mềnh toàn gọi là bài toán thằng ăn trộm
    ăn trộm sao cho khối lượng nhỏ mà giá trị lớn
    Bạn nói có "ný"
    Vũ trụ vốn chìm trong tăm tối,
    Newton bước ra ánh sáng tràn đầy.
    Rồi Einstein với nụ cười hóm hỉnh,
    Vũ trụ lại rơi vào bí ẩn mông lung.

  5. #4
    kietluan1's Avatar
    kietluan1 vẫn chưa có mặt trong diễn đàn Rìu Bạc
    Tham gia
    Jan 2011
    Bài
    410
    Cảm ơn
    182
    Điểm
    65/58 bài viết
    VR power
    0

    Default

    bài này có lỗi rồi

 

 

Quyền sử dụng

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể tự sửa bài viết của mình
  •