C++笔记-PTA 小明的晚饭

it2023-05-02  73

文章目录

一、题目二、算法思想三、代码

一、题目

二、算法思想

我使用的存储结构是结构体数组,里面含有两个属性,一个string类型存储饭店名称,一个int类型存储

既然是贪心,那小明在选择饭店的时候就必然会从最贵的饭店选起。 所以可以将结构体数组中的饭店数据按价格从高到低进行排序。

在遍历结构体数组之前,可以提前判断一下小明能否吃得起价格最低的饭店。 此时价格最低的饭店已经被排序到了第n个,如果吃不起的话就输出一句chitu并结束主函数。

之后就是遍历结构体数组,逐个进行遍历消费 当小明的钱付得起当前饭店的价格时才更新小明剩余的钱,小明每消费一次就输出对应饭店的名称。

三、代码

#include<iostream> using namespace std; struct restaurant { string name;//饭店名称 int price;//价格 }res[102]; int main() { int p;//小明拥有的钱 int n;//小明的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++) { cout<<res[i].name<<" "<<res[i].price<<endl; } */ 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; } } /* for(i=1;i<=n;i++) { cout<<res[i].name<<" "<<res[i].price<<endl; } */ return 0; }
最新回复(0)