#include<stdio.h> #include<string.h> char ch[103],str[103]; int main() { int n,max,a,b,i,d,m; while(~scanf("%d",&n)) { max=0; for(i=0;i<n;i++) { scanf("%s%d%d",str,&a,&b); if(b<200) // 体积少于200的,直接忽略 continue; d=(b/200)*200; if(d>1000) // 体积大于1000的,按1000算 d=1000; if(max<d/a) { max=d/a; strcpy(ch,str); m=b; } if(max==(d/a)&&m<b) // 如果价格都最便宜,则选择体积大的 { strcpy(ch,str); m=b; } } printf("%s\n",ch); } return 0; }
时间: 2024-03-28 11:39:31 浏览: 51
#include <stdio.h>
4星 · 用户满意度95%
这段代码是一个简单的模拟题目的解法,输入有多组数据,每组数据包含 n 个物品,每个物品有名称、价格和体积三个属性。要求找到价格体积比最优的物品,并输出其名称。其中体积小于 200 的物品直接忽略,体积大于 1000 的物品按 1000 计算。
代码中用 max 记录当前最优值,用 ch 和 m 记录最优物品的名称和体积。如果有多个物品价格体积比相同,则选择体积大的。
这段代码的时间复杂度为 O(n),对于数据规模较小的情况下能够很好地解决问题。
阅读全文