编程之美1.4-买书问题-解法1

#include <stdio.h>
#include <iostream>

float F(int y1,int y2,int y3,int y4,int y5){
 int a[5]={y1,y2,y3,y4,y5};
 for (int i=0;i<4;i++){
  for (int j=0;j<4-i;j++){
   if (a[j+1]>a[j]){
    int t;
    t=a[j+1];
    a[j+1]=a[j];
    a[j]=t;
   }
  }
 }
 y1=a[0];
 y2=a[1];
 y3=a[2];
 y4=a[3];
 y5=a[4];
    if (y1==0) return 0;
   
 float b[5];
 if (y5>0)
 {
  for (int i=0;i<5;i++)
     b[i]=-1;
     b[0]=5*8*0.75+F(y1-1,y2-1,y3-1,y4-1,y5-1);}
 if (y4>0)
 b[1]=4*8*0.8+F(y1-1,y2-1,y3-1,y4-1,y5);
 if (y3>0)
 b[2]=3*8*0.9+F(y1-1,y2-1,y3-1,y4,y5);
 if (y2>0)
 b[3]=2*8*0.95+F(y1-1,y2-1,y3,y4,y5);
 if (y1>0)
 b[4]=1*8+F(y1-1,y2,y3,y4,y5);
    
 float x;
 for (int w=0;w<5;w++)
 {   if (b[w]>0)
        x=b[w];
 }

 for (int z=0;z<5;z++)
 {   if (b[z]>0 && b[z]<x)
        x=b[z];
 }
 return x;
}
       
       
void main()
{
    float r; 
 r=F(2,2,2,1,1);
 printf("%f/n",r);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值