Tin Kien Giang K31
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.

Tin Kien Giang K31

Chao mung den voi dien dan Tin-KG Khoa 31
 
Trang ChínhTìm kiếmLatest imagesĐăng kýĐăng Nhập

 

 BÀI TOÁN BA LÔ 2

Go down 
Tác giảThông điệp
thu huong
Moderator
Moderator



Tổng số bài gửi : 25
Registration date : 17/09/2007

BÀI TOÁN BA LÔ 2 Empty
Bài gửiTiêu đề: BÀI TOÁN BA LÔ 2   BÀI TOÁN BA LÔ 2 Empty26/4/2008, 07:08

http://groups.google.com.vn/group/hoc-tap-tink31/files?hl=vi&upload=1

//cho n mon hang n<50 Mon thu i co khoi luong la a[i] va gia ti la c[i]
//Can chon mons hang nao de bo vao ba lo sao cho tong gia tri cac mon hang da cho la lon nhat
//Nhung chung khong vuot qua khoi luong W cho truoc(W<=100)
//Moi mon chi chon 1 hoac khong chon
Code:

#include <iostream>
#include <conio.h>
#include <fstream>

using namespace std;
int a[100],c[100];//luu khoi luong va chat luong cua vat
int b[100][100];
int chon[100];
int n,w;//luu so luong vat va khoi luong toi uu
int k,v;
void nhap()
{
   ifstream fi;
   fi.open("data.txt");
   fi>>n>>w;
   for(int i=1;i<=n;i++)
   {
      fi>>a[i]>>c[i];
//   for(i=0;i<n;i++)
      //fi>>c[i];
   }
   fi.close();
}
int MAX(int x, int y)
{
   if(x>y)
      return x;
   else
      return y;
}
void Taobang()
{
   //chon vat thu nhat
   for(v=1;v<=w;v++)
      if(v>=a[1])
         b[1][v]=c[1];
      else
         b[1][v]=0;
   //chon tu vat thu 2 den vat n
      for(k=2;k<=n;k++)
      {
         for(v=1;v<=w;v++)
         {
            if(v>=a[k])
               b[k][v]=MAX(b[k-1][v-a[k]]+c[k],b[k-1][v]);
            else
               b[k][v]=b[k-1][v];
         }
      }
}
void Trabang()
{
   for(int i=1;i<=n;i++)
      chon[i]=0;
   k=n; v=w;
   do{
      while((k>=2)&&(b[k][v]==b[k-1][v]))
         k--;
      chon[k]=1;
      v=v-a[k];
   }while(v!=0);
}
void xuat()
{
   ofstream fo;
   fo.open("out.txt");
   for(k=1;k<=n;k++)
   {
      if(chon[k]==1)
         fo<<k<<"  "<<a[k]<<"  "<<c[k]<<endl;
   }
   fo.close();
}
void main()
{
   nhap();
//   xuat();
   Taobang();
   Trabang();
   xuat();
}


Được sửa bởi thu huong ngày 28/4/2008, 07:27; sửa lần 1.
Về Đầu Trang Go down
thu huong
Moderator
Moderator



Tổng số bài gửi : 25
Registration date : 17/09/2007

BÀI TOÁN BA LÔ 2 Empty
Bài gửiTiêu đề: Re: BÀI TOÁN BA LÔ 2   BÀI TOÁN BA LÔ 2 Empty26/4/2008, 07:09

Về Đầu Trang Go down
 
BÀI TOÁN BA LÔ 2
Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Tin Kien Giang K31 :: Cộng Đồng :: Cộng Đồng :: Thảo luận chung-
Chuyển đến