Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17208
  • 博文数量: 37
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 354
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-15 22:04
文章分类

全部博文(37)

文章存档

2014年(37)

我的朋友

分类: C/C++

2014-07-15 22:14:27

#include "OJ.h"
 
  
/*


输入: nPapers表示试卷的数目(1≤Papers≤20),nRemain表示剩余的时间(1≤nRemain≤10000),paper[][2]是一个Papers*2的数组,


每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷的价值


输出: *pMaxValue为获得的最大价值
返回:
0:异常
1:计算成功返回




*/
int GetMaxValue(int nPapers, int nRemain, int paper[][2], double* pMaxValue)
{
   if (nPapers<0 || nPapers>20 || nRemain<0 || nRemain>10000)  
        return 0;   
    *pMaxValue=0;  
    int i,index,timesum=0,timesumMax=0;  
    double temp[20]={0};  
    for (i=0;i     {  
        temp[i]=(double)paper[i][1]/(double)paper[i][0];  
        timesumMax+=paper[i][0];  
    }  
    do  
    {  
        double f=0;  
        for (i=0;i         {  
            if (f             {  
                f=temp[i];  
                index=i;  
            }  
        }  
        temp[index]=0;  
        timesum+=paper[index][0];  
        if (timesum         {  
            *pMaxValue+=paper[index][1];  
        }  
        else  
        {  
            double t=(double)paper[index][1]*(nRemain-timesum+paper[index][0])/(double)paper[index][0];  
            *pMaxValue+=t;  
        }  
    } while (timesum     return 1;
}

阅读(167) | 评论(0) | 转发(0) |
0

上一篇:汽水瓶

下一篇:开心的小明

给主人留下些什么吧!~~