7-86 小明的晚饭 (50分)

7-86 小明的晚饭 (50分)
小明最近很用功学习,所以经常忘记吃饭。小明决定给自己放个假去大吃一顿,到了吃饭的地方后,小明陷入了沉思,因为他很纠结不知道吃什么,所以他全都要。小明的食量是无限的并且是个贪心的人,所以他想吃完自己支付范围内所有最贵的饭。他从最贵的饭店开始吃,若剩下的钱不足以吃当前最贵的饭店,则往下寻找较贵的饭店。直到钱财为空或者已经吃不起最便宜的饭了。当然小明是个有原则的人,他绝对不会重复吃已经吃过的餐厅。但是他学完习思考不出来该吃啥了,需要你的帮助 (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 <stdio.h>
#include <string.h>

struct fandian
{
    int m;
    char str[10];
};
int main()
{
    int p, n;
    scanf("%d%d", &p, &n);
    int i,j;
    struct fandian x[n];
    for(i=0 ; i<n ; i++)
    {
        scanf("%s%d", x[i].str, &x[i].m);//存入餐厅名称和价格
    }
    struct fandian t;
    for(i=0 ; i<n ; i++)
    {
        for(j=0 ; j<n-i-1 ; j++)
        {
            if(x[j].m<x[j+1].m)//将餐厅从价格高到低进行排序
            {
                t=x[j];
                x[j]=x[j+1];
                x[j+1]=t;
            }
        }
    }
    if(p<x[n-1].m)//如果钱比最低的还要少,则‘chitu’
    {
        printf("chitu\n");
    }
    else
    {
        for(i=0 ; i<n ; i++)//历遍数组,如果钱足够则输出该餐厅名称
        {

            if(p>=x[i].m)
            {
                printf("%s\n", x[i].str);
                p-=x[i].m;
            }
            if(p<=0)//没有钱时提前终止循环
            {
                break;
            }
        }
    }
    return 0;
}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
201812-2小明放学的问题是关于小明利用“智慧光明”终端给出的信息,估算自己放学回家的时间。在这道题目中,小明已经规划好了回家的路线,并能够预测经过各个路段的时间。此外,小明还能够看到出发时刻路上经过的所有红绿灯的指示状态。根据题目的描述,我们可以推导出小明此次回家所需要的时间。 首先,题目给出了红绿灯的设置,包括红灯、黄灯和绿灯别需要的时间。接下来,题目给出了小明经过的道路段数和路过的红绿灯数目。然后,题目给出了每个道路段和红绿灯的状态,包括经过的道路需要的时间和红绿灯的状态以及倒计时显示的数字。 根据题目的要求,我们需要不断地推演现在的时间下新经过的红绿灯状态。可以将红灯和黄灯放在一起,因为这两个状态下都得等待,然后将绿灯状态单独开。这样就将问题简化为两个区间,即红黄和绿。通过计算每个区间所需的时间,就可以得到小明放学回家所用的总时间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CCF 201812-2----小明放学----区间问题](https://blog.csdn.net/weixin_44778155/article/details/101158855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值