• 买书问题


    问题:

    某书店对《哈利波特》做促销活动,一共有5卷。假设每一卷的单独销售价格为8元,如果读者一次购买不同的两卷,就可以扣除5%的费用,三卷则更多,优惠如下:

    对所有可能情况分析之:

    可以由此看出规律 编写代码如下;

    #include<stdio.h>  
                                                                                                    
    int change[5] = {25,20,10,5,0};  
       
    //求数组中最大的值  
    //用于取出做大节约钱数  
    int max_index(int a[5]){  
        int max=0;  
        int i;  
        for(i=0;i<5;i++){  
            if(max < a[i])  
                max = a[i];  
        }  
        return max;  
    }  
    //冒泡排序  
    //用于转化最小表示(1,2,2,2,2)->(2,2,2,2,1)  
    void bubble(int *a,int n)  
    {  
        int i,j,temp;  
        for(i=0;i<n-1;i++)  
            for(j=i+1;j<n;j++)  
                if(a[i]<a[j]) {  
                    temp=a[i];  
                    a[i]=a[j];  
                    a[j]=temp;  
                }  
    }  
       
    //递归函数  
    int func(int a[5]){  
        int i,j,k;  
        int buf[5];  
        int cash[5];  
        for(i=0;i<5;i++){  
            cash[i] = 0;  
            //buf[i] = a[i];  
        }  
        //退出条件  
        if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3]&&a[3]==a[4]&&a[4] == 0){  
            return 0;  
        }  
        //排序 转化最小表示  
        bubble(a,5);  
        //5次循环  
        for(i=1;i<=5;i++){  
            if(a[5-i] >= 1){  
                for(k=0;k<5;k++){  
                    buf[k] = a[k];  
                }  
                //减一  
                for(j=0;j<=5-i;j++)  
                    buf[j] = buf[j]-1;  
                //继续递归  
                cash[i-1] = (5-i+1)*8*change[i-1]+func(buf);  
            }  
        }  
        //返回最大值  
        return max_index(cash);  
    }  
       
    int main(){  
         
        int b=0;
        int a[5] = {0,0,0,0,0};  
        printf("本程序假设每本书售价8元,请输入书本个数:"); 
        scanf("%d",&b);
        for(int i=0;i<b;i++)
        {
            a[i%5]+=1;
        }
        float result =0;  
        result = func(a);  
        printf("共节约 %2.2f元!
    ",result/100);  
    }

    运行截图:

  • 相关阅读:
    Light OJ 1067 Combinations (乘法逆元)
    hdu1172猜数字(暴力枚举)
    hdu 2266 How Many Equations Can You Find(DFS)
    项目之问卷调查问题
    Django之Modelform组件
    GIT
    form组件的总结
    总结django知识点
    djang-分页
    Django-Ajax
  • 原文地址:https://www.cnblogs.com/huazongzong/p/4433123.html
Copyright © 2020-2023  润新知