Home+Work
来源:互联网 发布:淘宝卖家卖出后钱在哪 编辑:程序博客网 时间:2024/04/29 16:29
#include "OJ.h"
/*
输入: nPapers表示试卷的数目(1≤Papers≤20),nRemain表示剩余的时间(1≤nRemain≤10000),paper[][2]是一个Papers*2的数组,
每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷的价值
输出: *pMaxValue为获得的最大价值
返回:
0:异常
1:计算成功返回
*/
void sort(double(*p)[2],int n)
{
double temp0,temp1;
for(int i=0;i<n;i++)
for(int j=n-1;j>=i;j--)
if(p[j+1][0]>p[j][0])
{//交换记录
temp0=p[j][0];
temp1=p[j][1];
p[j][0]=p[j+1][0];
p[j][0]=p[j+1][1];
p[j+1][0]=temp0;
p[j+1][1]=temp1;
}
}
int GetMaxValue(int nPapers, int nRemain, int paper[][2], double* pMaxValue)
{
/* double total=nRemain;
if(nPapers<1||nPapers>20||nRemain<1||nRemain>10000||!paper)
{
return 0;
}
double (*get)[2]=new double[nPapers][2];
for(int i=0;i<nPapers;i++)
{
get[i][0]=paper[i][1]/(double)paper[i][0];
get[i][1]=paper[i][1];
}
sort(get,nPapers);
while((abs(total)-0)>0.01)
{
}
return 0;
*/
if (nPapers<0 || nPapers>200 || nRemain<0 || nRemain>10000)
{
return 0;
}
*pMaxValue=0;
int i,index,timesum=0,timesumMax=0;
double temp[20]={0};
for (i=0;i<nPapers;i++)
{
temp[i]=(double)paper[i][1]/(double)paper[i][0];
timesumMax+=paper[i][0];
}
do
{
double f=0;
for (i=0;i<nPapers;i++)
{
if (f<temp[i])
{
f=temp[i];
index=i;
}
}
temp[index]=0;
timesum+=paper[index][0];
if (timesum<nRemain)
{
*pMaxValue+=paper[index][1];
}
else
{
double t=(double)paper[index][1]*(nRemain-timesum+paper[index][0])/(double)paper[index][0];
*pMaxValue+=t;
}
} while (timesum<nRemain && timesum<timesumMax);
return 1;
}
0 0
- Home Work
- home work
- Home Work
- Home Work
- Home+Work
- Home+work
- Home+Work
- Home work
- Home Work
- Home Work
- Work from home
- tzc1100 Home Work
- AOJ2 Home Work
- 华为OJ Home+work
- HZNUOJ 1111 Home Work
- YTU 1002: Home Work
- 南阳师范 home work
- 计蒜客 Home Work
- 保护块(Guarded Blocks)
- 图像的显示方式
- Fibonacci数列的计算和转换
- spring quartz 定时任务 demo
- 状态设计模式
- Home+Work
- 常见排序算法实践
- hibernate缓存机制(二)
- Docker安装Tomcat
- IP地址判断有效性
- android数据库优化
- Trie树|字典树(字符串排序)
- 自定义View解析
- [Android]eclipse NDK配置20160706