Problem Description
小 I 去天津玩啦,一路上,他跟他的同学发生了许多有趣的事。
当他们路过天津外国语学院时,他发现了许多小姐姐,他眼花缭乱,甚至不知道该去找哪个小姐姐聊天。
怎么办怎么办!
于是他想到了你,他拍了一张照片给你,你发现照片里一共有 n 个小姐姐(序号从 0 到 n - 1),每个小姐姐都有自己的风格,可以按特征划分出 3 个特征值 w1 , w2 , w3 ,你知道小 I 特别喜欢 w1 特征值高的小姐姐,不太看重 w3 ,于是你对于每个特征都赋予一个权重,分别对应为0.7 0.2 0.1,你能帮小 I 找出来他发来的这张照片里他最喜欢的小姐姐吗?
Input
多组输入,对于每组输入:
第一行给出 n (n <= 5000) ,之后有 n 行数。
每行数有三个数 w1, w2, w3,表示三个特征值。
所有整数及结果都在整型范围内,不存在权值和相等的情况。
Output
n 个小姐姐中权值和最高的序号。
Sample Input
3
1 5 10
5 1 10
10 5 1
Sample Output
2
Hint
Source
#include <stdio.h>
#include <stdlib.h>
struct meinv
{
int a[5000];
};
int main()
{
int n,i,j,b;
float w1=0.7,w2=0.2,w3=0.1;//定义三个权重,也可以不定义,直接在下面使用
struct meinv A;
while(scanf("%d",&n)!=EOF)
{
int max=0;
for(i=0;i<n;i++)
{
int s=0;
for(j=0;j<3;j++)//每次输入三个值并分别加上权重
{
scanf("%d",&A.a[i]);
if(j==0)A.a[i]=A.a[i]*w1;
if(j==1)A.a[i]=A.a[i]*w2;
if(j==2)A.a[i]=A.a[i]*w3;
s=s+A.a[i];//输入的三个部分权重相加,得出一个小姐姐的满意程度
}
if(max<s)
{
max=s;//得出对所有小姐姐满意度中的最大值
b=i;//记录最喜欢的小姐姐的序号
}
}
printf("%d\n",b);
}
return 0;
}
这是第二篇了,每天也要加油啊。大家一起学习吧。