信息学奥赛一本通(c++):1111:不高兴的津津

本文介绍了一道信息学奥赛题目“1111:不高兴的津津”的解决方法,通过定义二维数组记录每天的学习时间来找出津津最不高兴的一天。

活动地址:优快云21天学习挑战赛

信息学奥赛一本通(c++):1111:不高兴的津津

一、题目

1111:不高兴的津津
时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

        津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

【输入】

        包括七行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

【输出】

        包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

【输入样例】

5 3
6 2
7 2
5 3
5 4
0 4
0 6

【输出样例】

3

二、思路

        定义一个二维数组 把每行相加就是心情值 然后找到最大值是哪天即可。


三、代码

#include<iostream>
using namespace std;

int main()
{
    int a[7][2];
    int happy[7];

    for(int i=0; i<7; i++)
    {
        for(int j=0; j<2; j++)
        {
            cin>>a[i][j];
        }
    }

    for(int i=0; i<7; i++)
    {
        happy[i]=0;
        for(int j=0; j<2; j++)
        {
            happy[i]+=a[i][j];
        }
    }

    int max=0,k;
    for(int i=0; i<7; i++)
    {
        if(happy[i]>max)
        {
            max=happy[i];
            k=i;
        }
    }

    if(max>8) cout<<k+1;
    else cout<<0;

    return 0;
}

### 存钱与花钱问题的解答分析 信息学奥赛一本中关于“存钱与花钱”类问题,常涉及模拟每个月的收支情况,并根据预算判断是否能够完成储蓄计划。以1074题为例,该问题要求模拟津津的储蓄计划实施过程:每个月初获得300元,月末需根据预算决定是否能继续执行计划[^1]。 #### 解题思路 - **变量定义**: - `m` 表示津津手中的剩余资金。 - `s` 表示累计存款总额。 - `b` 表示每月的预算支出。 - **循环结构**: - 循环12次,对应12个月。 - 每月月初增加300元到当前手中金额。 - 判断当前金额是否足以支付当月预算。 - 如果足,则输出`-i`(`i`为当前月份)并结束程序。 - 如果足够,则计算本月结束后剩余的钱,并将整百部分存入银行。 - **最终计算**: - 计算总存款加上利息以及手头剩余资金的总和。 #### 示例代码 ```cpp #include <bits/stdc++.h> using namespace std; int main() { int m = 0, s = 0, b; for (int i = 1; i <= 12; ++i) { cin >> b; if (m + 300 >= b) { int remaining = m + 300 - b; int deposit = remaining / 100 * 100; // 存款为剩余金额中的整百数 m = remaining % 100; // 更新手中剩余金额 s += deposit; // 累计存款 } else { cout << -i; return 0; } } double total = 1.2 * s + m; // 计算本息和 cout << fixed << setprecision(0) << total; return 0; } ``` #### 输入输出说明 - **输入样例**: ``` 290 230 280 200 300 170 340 50 90 80 200 60 ``` - **输出样例**: ``` -7 ``` 表示第7个月预算超支,无法继续执行储蓄计划[^2]。 #### 扩展思考 此类问题的关键在于如何处理每月的动态变化,并在条件满足时及时终止程序。同时,对于存款和余额的更新逻辑需要仔细设计,避免出现计算错误。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值