thu huong Moderator
Tổng số bài gửi : 25 Registration date : 17/09/2007
| Tiêu đề: BÀI TOÁN BA LÔ 2 26/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. | |
|
thu huong Moderator
Tổng số bài gửi : 25 Registration date : 17/09/2007
| Tiêu đề: Re: BÀI TOÁN BA LÔ 2 26/4/2008, 07:09 | |
| | |
|