pht_dce
14-11-2009, 15:23
Hiz, mình làm bài này từ sáng đến h , nhưng nó vẫn chưa chịu chạy . Ace pro vô giúp mình với :
#include
#include
#include
int price[20][20]; // ma trận chi phí
int city[20];
int bestway[20];
int flag[20];
int n,can,kyluc,pmin;
void Nhapdulieu();
void Try(int i);
void Init();
void Ghinhankyluc();
void Inketqua();
void Swap();
void Nhapdulieu(){
int i,j,n, temp ;
printf("Nhap so thanh pho : "); scanf("%d",&n);
for(i=1 ; i<=n ; i++){
for(j=1 ; j<=n ; j++){
printf("Nhap chi phi tu thanh pho %d den thanh pho %d : ",i,j);
scanf("%d",&temp);
price[i]= temp;
if(i==j) price[i]=0;
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%3d ",price[i]);
pmin = price[1][2];
for(i=1;i<=n;i++){ // tìm giá nhỏ nhất trong ma trận
for(j=1;j<=n;j++){
if ((i!=j)&&(pmin>price[i])) pmin = price[i];
}
}
printf("\n %d",pmin) ;
}
void Try(int i){ // thử từng trường hợp
int j;
for(j=2;j<=n;j++){
if (flag==0){
city[i]=j;
flag=1;
can= can + price[city[i-1]][city[i]];
if(i==n) Ghinhankyluc() ;
else
if (can+(n-i+1)*pmin < kyluc) Try(i+1);
flag=0;
can= can-price[city[i-1]][city[i]];
}
}
}
void Ghinhankyluc(){
int i,tongcp;
tongcp= can + price[city][city[1]] ;
if (tongcp < kyluc){
kyluc = tongcp;
for(i=1;i<=n;i++)
bestway[i] = city[i];
}
}
void Inketqua(){
int i;
printf("\n Chi phi thap nhat : ", kyluc);
printf("\n Con duong co chi phi thap nhat:");
for(i=1;i<=n;i++)
printf("%3d -> ",bestway[i]);
printf("%d",1);
}
void Init(){
int i;
printf("\n %d",pmin);
kyluc= 30000;
can = 0;
city[1]=1;
for(i=1;i<=n;i++)
flag[i]=0;
}
void main(){
Nhapdulieu();
Init();
Try(2);
Ghinhankyluc();
Inketqua();
getch();
}
Mình đang gấp , bạn nào giúp mình sẽ tặng 999 nụ hôn nồng thắm :*
#include
#include
#include
int price[20][20]; // ma trận chi phí
int city[20];
int bestway[20];
int flag[20];
int n,can,kyluc,pmin;
void Nhapdulieu();
void Try(int i);
void Init();
void Ghinhankyluc();
void Inketqua();
void Swap();
void Nhapdulieu(){
int i,j,n, temp ;
printf("Nhap so thanh pho : "); scanf("%d",&n);
for(i=1 ; i<=n ; i++){
for(j=1 ; j<=n ; j++){
printf("Nhap chi phi tu thanh pho %d den thanh pho %d : ",i,j);
scanf("%d",&temp);
price[i]= temp;
if(i==j) price[i]=0;
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%3d ",price[i]);
pmin = price[1][2];
for(i=1;i<=n;i++){ // tìm giá nhỏ nhất trong ma trận
for(j=1;j<=n;j++){
if ((i!=j)&&(pmin>price[i])) pmin = price[i];
}
}
printf("\n %d",pmin) ;
}
void Try(int i){ // thử từng trường hợp
int j;
for(j=2;j<=n;j++){
if (flag==0){
city[i]=j;
flag=1;
can= can + price[city[i-1]][city[i]];
if(i==n) Ghinhankyluc() ;
else
if (can+(n-i+1)*pmin < kyluc) Try(i+1);
flag=0;
can= can-price[city[i-1]][city[i]];
}
}
}
void Ghinhankyluc(){
int i,tongcp;
tongcp= can + price[city][city[1]] ;
if (tongcp < kyluc){
kyluc = tongcp;
for(i=1;i<=n;i++)
bestway[i] = city[i];
}
}
void Inketqua(){
int i;
printf("\n Chi phi thap nhat : ", kyluc);
printf("\n Con duong co chi phi thap nhat:");
for(i=1;i<=n;i++)
printf("%3d -> ",bestway[i]);
printf("%d",1);
}
void Init(){
int i;
printf("\n %d",pmin);
kyluc= 30000;
can = 0;
city[1]=1;
for(i=1;i<=n;i++)
flag[i]=0;
}
void main(){
Nhapdulieu();
Init();
Try(2);
Ghinhankyluc();
Inketqua();
getch();
}
Mình đang gấp , bạn nào giúp mình sẽ tặng 999 nụ hôn nồng thắm :*