7-5 小明的晚饭

7-5 小明的晚饭

分数 10
作者 ljw
单位 浙江大学
小明最近很用功学习,所以经常忘记吃饭。小明决定给自己放个假去大吃一顿,到了吃饭的地方后,小明陷入了沉思,因为他很纠结不知道吃什么,所以他全都要。小明的食量是无限的并且是个贪心的人,所以他想吃完自己支付范围内所有最贵的饭。他从最贵的饭店开始吃,若剩下的钱不足以吃当前最贵的饭店,则往下寻找较贵的饭店。直到钱财为空或者已经吃不起最便宜的饭了。当然小明是个有原则的人,他绝对不会重复吃已经吃过的餐厅。但是他学完习思考不出来该吃啥了,需要你的帮助
(Hint:小明不做其他选择,只要贵的,即使贵的饭吃的少而便宜的饭能吃的多,他也会选择最贵的)

输入格式:

输入一个p表示小明拥有的钱(1<=n<=10000),在输入一个n表示小明有n(1<=n<=100)种选择,接下来的n行,每一行包含一个字符串表示饭店店名和在该饭店吃饭的价格。字符串长度不超过20。

输出格式:

输出小明能够吃到的饭,如果小明什么都吃不起,则输出“chitu”。

输入样例:

10 5
McDonald's 2
KFC 6
Yifan 1
Erfan 3
Sanfan 4

输出样例:

KFC
Sanfan

参考代码

#include<iostream>
#include<string>
#include<string.h>
using namespace std;

void mySort(string name[], int cost[],int n)
{
	for (int i = n - 1; i >= 0; i--)
	{
		for (int j = 0; j < i; j++)
		{
			if (cost[j] < cost[j + 1])
			{
				int t1;
				t1 = cost[j];
				cost[j] = cost[j + 1];
				cost[j + 1] = t1;

				string t2;
				t2 = name[j];
				name[j] = name[j + 1];
				name[j + 1] = t2;

			}
		}
	}
}

int main()
{
	int money;
	cin >> money;
	int n;
	cin >> n;
	string name[102];
	int cost[102];
	for (int i = 0; i < n; i++)
	{
		cin >> name[i] >> cost[i];
	}
	//排序
	mySort(name, cost,n);
	//消费
	if (money < cost[n - 1])
	{
		cout << "chitu" << endl;//吃土哈哈哈哈
		return 0;
	}
	for (int i = 0; i < n; i++)
	{
		if (money < cost[i])
		{
			continue;
		}
		else
		{
			cout << name[i] << endl;
			money -= cost[i];
		}
	}
	return 0;
}
posted @ 2024-03-09 17:23  yesno233233  阅读(83)  评论(0)    收藏  举报