文章目录
一、题目二、算法思想三、代码
一、题目
二、算法思想
我使用的存储结构是结构体数组,里面含有两个属性,一个string类型存储饭店名称,一个int类型存储
既然是贪心,那小明在选择饭店的时候就必然会从最贵的饭店选起。 所以可以将结构体数组中的饭店数据按价格从高到低进行排序。
在遍历结构体数组之前,可以提前判断一下小明能否吃得起价格最低的饭店。 此时价格最低的饭店已经被排序到了第n个,如果吃不起的话就输出一句chitu并结束主函数。
之后就是遍历结构体数组,逐个进行遍历消费 当小明的钱付得起当前饭店的价格时才更新小明剩余的钱,小明每消费一次就输出对应饭店的名称。
三、代码
#include<iostream>
using namespace std
;
struct restaurant
{
string name
;
int price
;
}res
[102];
int main()
{
int p
;
int n
;
int i
,j
;
cin
>>p
>>n
;
for(i
=1;i
<=n
;i
++)
{
cin
>>res
[i
].name
;
cin
>>res
[i
].price
;
}
for(i
=1;i
<=n
;i
++)
{
for(j
=1;j
<=n
;j
++)
{
restaurant tmp
;
if(res
[j
].price
<res
[j
+1].price
)
{
tmp
= res
[j
];
res
[j
] = res
[j
+1];
res
[j
+1] = tmp
;
}
}
}
if(p
<res
[n
].price
)
{
cout
<<"chitu"<<endl
;
return 0;
}
for(i
=1;i
<=n
;i
++)
{
if(p
>=res
[i
].price
)
{
p
-= res
[i
].price
;
cout
<<res
[i
].name
<<endl
;
}
}
return 0;
}