Tugas Kelompok: Kelas: ANALGO 9
Tugas Kelompok: Kelas: ANALGO 9
Firda Alfiyani W
10111262
10111257
Chendy Arina
10111603
Kelas
: ANALGO 9
#include <cstdlib>
#include <iostream>
#define ukuran 99
void sort(int[],int);
class knap
int n,p[50],w[50],c,oldc,tp,tw;
int i,y,x[50],f[50][120];
public:
void get();
void findf();
void findopt();
void display();
void hitung();
};
void knap::hitung()
tp=0;tw=0;
for(int i=1;i<=n;i++)
{
if(x[i]==1){
tw+=w[i];
tp+=p[i];
}
}
void knap::get()
cin>>n;
cin>>c;
oldc=c;
for(int i=1;i<=n;i++)
cin>>p[i];
cin>>w[i];
void knap::findf()
for(y=0;y<w[n];y++)
f[n][y]=0;
for(y=w[n];y<=c;y++)
f[n][y]=p[n];
for(int i=n-1;i>1;i--)
for(int y=0;y<w[i];y++)
f[i][y]=f[i+1][y];
for(y=w[i];y<=c;y++)
f[i][y]=(f[i+1][y]>(f[i+1][y-w[i]]+p[i]))?f[i+1][y]:(f[i+1][y-w[i]]+p[i]);
f[1][c]=f[2][c];
if(c>=w[1])
f[1][c]=(f[1][c]>f[2][c-w[1]]+p[1])?f[1][c]:f[2][c-w[1]]+p[1];
findf();
for(i=1;i<n;i++)
if(f[i][c]==f[i+1][c])
x[i]=0;
else
x[i]=1;
c-=w[i];
x[n]=(f[n][c])?1:0;
void knap::display()
for(int i=1;i<=n;i++)
cout<<"\n\t"<<"x["<<i<<"]:"<<x[i]<<" "<<endl;
struct pelanggan{
int id, t;
};
int i, temp;
temp=p[x].id;
p[x].id=p[x+1].id;
p[x+1].id=temp;
}
}
}
cout<<endl;
cout<<endl<<endl;
int x[ukuran],i,n,uang,hasil[ukuran];
cout << "Banyaknya Koin :";cin>>n;
cout <<"Masukan Jenis Koin (Rp) : "<<"\n";
for(i=1;i<=n;i++)
{
cout<<"Koin Ke-"<<i<<"="; cin>>x[i];
}
sort(x,n);
cout<<"Koin yang tersedia: "<<"\n";
for(i=1;i<=n;i++)
{
cout<<x[i];
cout<<"\n";
}
cout<<"Masukan nilai yang ingin dipecah : Rp. ";cin>>uang;
cout<<"Hasil algoritma greedynya adalah : \n";
for(i=1;i<=n;i++)
{
hasil[i]=uang/x[i];
uang=uang%x[i];
}
for(i=1;i<=n;i++)
{
if (uang>=x[i])
{
uang=uang-x[i];
hasil[i]=hasil[i]+1;
}
else
{
i++;
}
}
for(i=1;i<=n;i++)
{
cout<<"Koin "<<x[i]<<" ";
cout<<"Sebanyak : "<<hasil[i]<<"\n";
}
break; }
case 2 : {
pelanggan y[100];
cout<<"\n\n\t\t\t -----------------";
cout<<"\n\n\t\t\t -----------------";
k.get();
k.findopt();
k.display();
k.hitung();
break; }
default :{ cout<<"Menu salah, Pilih 1 sampai 3\n";}
}
system("PAUSE");
return EXIT_SUCCESS;
}
hold=a[j+1];
a[j+1]=a[j+2];
a[j+2]=hold;
}
}
}
}