这个算法不对
#include <stdio.h>
#define Max 255
int data2[Max][5];
int n;
int count=1;
struct Pant
{
int x;
int y;
int num;
int price;
} data[Max];
struct Pant path[Max];
void fileread()
{
FILE *fp;
fp = fopen("peanut2.txt","r");
if(fp == NULL)
{
printf("Open file failure!");
return ;
}
else
{
fscanf(fp,"%d",&n);
for(int i=0; i<n; i++)
{
fscanf(fp,"%d %d %d %d",&data[i].x,&data[i].y,&data[i].num,&data[i].price);
printf("%d %d %d %d\n",data[i].x,data[i].y,data[i].num,data[i].price);
}
}
fclose(fp);
}
void input()
{
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d %d %d %d",&data[i].x,&data[i].y,&data[i].num,&data[i].price);
}
}
void show()
{
for(int j=0; j<n-count; j++)
{
printf("%d %d\n",data[j].num,data[j].price);
}
}
void showPath()
{
//printf("(%d,%d)->",data[0].x,data[0].y);
for(int j=0; j<count; j++)
{
printf("(%d,%d)",path[j].x,path[j].y);
if(j<count-1)
{
printf("->");
}
}
printf("\n");
}
double calPrice()
{
double tem=1;
double Price;
showPath();
for(int j=0; j<count; j++)
{
tem*=path[j].num;
}
//printf("tem:%d\n",tem);
Price=(double)tem/path[count].price;
printf("Price:%lf\n",Price);
printf("tem:%lf price:%d %lf\n",tem,path[count].price,Price);
return Price;
}
int findminIndex(int n)
{
//showPath();
int minIndex=1;
path[count]=data[minIndex];
double min=calPrice();
printf("count:%d\n",count);
for(int i=2; i<n-count+1; i++)
{
path[count]=data[i];
showPath();
double tem=calPrice();
if(tem<min)
{
min=tem;
minIndex=i;
}
}
path[count]=data[minIndex];
printf("%d %d \n",data[minIndex].num,data[minIndex].price);
for(int i=minIndex; i<n-1; i++)
{
data[i]=data[i+1];
}
count++;
return minIndex;
}
int function(int n)
{
path[0]=data[0];
for(int i=1; i<n; i++)
{
int minIndex=findminIndex(n);
printf("minIndex:%d\n",minIndex);
}
showPath();
}
int main()
{
fileread();
//input();
function(n);
return 0;
}