Problem Description
小沃沃一共参加了 4 门考试,每门考试满分 100 分,最低 0 分,分数是整数。
给定四门考试的总分,请问在最优情况下,四门课绩点的和最高是多少?
分数与绩点之间的对应关系如下:
95~100 4.3
90~94 4.0
85~89 3.7
80~84 3.3
75~79 3.0
70~74 2.7
67~69 2.3
65~66 2.0
62~64 1.7
60~61 1.0
0~59 0
Input
第一行一个正整数 test(1≤test≤401)test(1 \le test \le 401)test(1≤test≤401) 表示数据组数。 接下来 testtesttest 行,每行一个正整数 xxx 表示四门考试的总分 (0≤x≤400)(0 \le x \le 400)(0≤x≤400)。
Output
对于每组数据,一行一个数表示答案。答案保留一位小数。
Sample Input
2
0
400
Sample Output
0.0
17.2
思路:好久没敲脑子又傻了,总想着贪心或者一定有计算公式。然而这一题就是枚举,四门成绩再怎么枚举也不会超时的。而且枚举可以分阶段枚举,就算是4次100分的枚举,时间也是够的。
//按照分阶段的方式枚举
#include<bits/stdc++.h>
using namespace std;
int t,x;
int a[11]={95,90,85,80,75,70,67,65,62,60,0};
double b[11]={4.3,4.0,3.7,3.3,3.0,2.7,2.3,2.0,1.7,1.0,0.0};
double sum;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&x);sum=0;
for(int i=0;i<=10;i++)
{
for(int j=0;j<=10;j++)
{
for(int k=0;k<=10;k++)
{
for(int l=0;l<=10;l++)
{
if(a[l]+a[k]+a[j]+a[i]<=x)
{
sum=max(sum,b[l]+b[k]+b[j]+b[i]);
}
}
}
}
}
printf("%.1f\n",sum);
}
}