现在小马要出笔试题,
笔试题分为难度E EM M MH H五个级别
每个级别的题目对应在题库中的数量为Ne Nem Nm Nmh Nh
一套笔试题3个题目,每一套题总难度差不多(1、2、3题的个数差不多)
难度E的题只能作为第一题
难度为EM的题能作为第一题或者第二题
难度为M的题只能作为第二题
难度为MH的题能作为第二题或第三题
难度为H的题智能作为第三题。
若有一个题为空,则不能组成一套试题。
第一题:E + EM + H
第二题:E + MH + H
第三题:EM + M + MH
========我啥也不会,用了暴力算法,在本地OK,提交上去不报错,不出结果,不报超时======RNM退钱!
应该研究一下二分法查找的。
#include<iostream>
using namespace std;
int min(int a,int b)
{
int temp;
if(a>b)
return b;
else
return a;
}
int main()
{
int groups;
int *a;
cin >> groups;//输入数据组数
a = new int[groups];//用来存储答案 开辟空间=3
for(int l=0;l<groups;l++)
{
a[l]=0;
}
int tests = 0;
int num[5]={0};
int result = 0;
int timu[3] = { 0 };
int x,y = 0;
for (int i = 0; i < groups; i++)//计算多少组?
{
for (int c = 0; c < 5; c++)
cin >> num[c];//将题目数输入进去
if (num[0] + num[1] == 0 || num[1] + num[2] + num[3] == 0 || num[3] + num[4] == 0)
{
a[i] = 0;//出不了题,有题目选不到题
continue;
}
for (x=0; x < num[1]; x++)
{
for (y=0; y < num[3]; y++)
{
tests = min(num[0] + num[1] - x, min(x + num[2] + num[3] - y, y + num[4]));
if (tests > a[i])
a[i] = tests;//保存结果
}
}
}
for (int g = 0; g < groups; g++)
{
cout << a[g]<<endl;
}
return 0;
}