C语言-最低价格问题

img

img


请添加正文描述,长度需大于30个字符!
如何计算下一个要买的,可以不用那个指定的算法

这个算法不对

#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;
}