c++程序:初一某班有n位同学,学号1~n,新学期开始大家相互不认识,两两之间的好感度均为0。 这一个学期内发生了很多事情,影响着人与人之间的好感度。例如当a对b做了好事,b对a的好感度会增加;当a对b做了坏事,b对a的好感度会减少。 老师希望能在每件事情发生后,统计当下同学间好感度的最大值,你能帮他完成吗? 注意:好感度不是相互的,a对b的好感度可以不等于b对a的好感度。 输入 第一有两个正整数 n,m。分别表示人数和事情的个数。 接下来有 m 行,每行四个整数op,a,b,c,op为1表示做了好事,op为0表示做了坏事, c描述事情的好感度值,例如1 3 5 6,表示 3 号同学对 5 号同学做了好感度为6的好事。 2≤n,m≤100,1≤a,b≤n,1≤c≤100。 输出 输出共 m 行,若第i件事情发生以后,当前同学间好感度的最大值。


为了实现这个任务,我们可以使用一个二维数组来存储每个同学之间的当前好感度。每当发生一件事情时,我们更新相应的好感度,并计算当前所有同学之间好感度的最大值。以下是完整的C++代码实现: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, m; cin >> n >> m; // 初始化好感度矩阵,初始值为0 vector<vector<int>> goodFeeling(n + 1, vector<int>(n + 1, 0)); for (int i = 0; i < m; ++i) { int op, a, b, c; cin >> op >> a >> b >> c; // 更新好感度 if (op == 1) { goodFeeling[b][a] += c; } else { goodFeeling[b][a] -= c; } // 计算当前好感度的最大值 int maxGoodFeeling = 0; for (int j = 1; j <= n; ++j) { for (int k = 1; k <= n; ++k) { if (goodFeeling[j][k] > maxGoodFeeling) { maxGoodFeeling = goodFeeling[j][k]; } } } // 输出当前好感度的最大值 cout << maxGoodFeeling << endl; } return 0; } ``` 代码解释 1. 输入读取: - 首先读取两个整数 `n` 和 `m`,分别表示人数和事件的数量。 - 然后读取 `m` 行事件,每行包含四个整数 `op`, `a`, `b`, `c`。 2. 好感度矩阵初始化: - 使用一个二维向量 `goodFeeling` 来存储每个同学之间的当前好感度,初始值为0。 3. 事件处理: - 对于每个事件,根据 `op` 的值(1表示做好事,0表示做坏事)更新 `goodFeeling[b][a]`。 - 如果 `op` 为1,则 `goodFeeling[b][a]` 增加 `c`。 - 如果 `op` 为0,则 `goodFeeling[b][a]` 减少 `c`。 4. 计算最大好感度: - 每次事件处理后,遍历整个 `goodFeeling` 矩阵,找到当前的最大好感度值。 5. 输出结果: - 每次事件处理后,输出当前的最大好感度值。 复杂度分析 - 时间复杂度:每次事件处理的时间复杂度为 \(O(n^2)\),因为需要遍历整个 `goodFeeling` 矩阵来找到最大值。总的事件数量为 `m`,所以总的时间复杂度为 \(O(m \cdot n^2)\)。 - 空间复杂度:使用了一个 \(n \times n\) 的二维数组来存储好感度,空间复杂度为 \(O(n^2)\)。 这个实现方法在给定的约束条件下(\(2 \leq n, m \leq 100\))是可行的。 [2024-10-17 16:07:21 | AI写代码神器 | 726点数解答]
- c语音 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-30 00:37:20)294
- 定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98 李四 10002 100 王五 10003 95 赵六 10004 99 钱七 10005 93 输出样例: 请输入第1位同学的信息:姓名 学号 成绩 请输入第2位同学的信息:姓名 学号 成绩 请输入第3位同学的信息:姓名 学号 成绩 请输入第4位同学的信息:姓名 学号 成绩 请输入第5位同学的信息:姓名 学号 成绩 钱七,10005,93 王五,10003,95 张三,10001,98 赵六,10004,99 李四,10002,100(354点数解答 | 2024-10-30 18:45:58)230
- c语言定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(373点数解答 | 2024-10-31 19:49:58)219
- c语音定义一个结构体student,其中包含的成员为char no[10];char name[10];float score。设有5个学生,从键盘输入其信息,按成绩的升序排序。并输出这5个学生排序后的信息。 输入格式: "%s%s%f" 输出格式: "请输入第%d位同学的信息:姓名 学号 成绩\n" "%s,%s,%.0f\n" 输入样例: 张三 10001 98↙ 李四 10002 100↙ 王五 10003 95↙ 赵六 10004 99↙ 钱七 10005 93↙ 输出样例: 请输入第1位同学的信息:姓名 学号 成绩↙ 请输入第2位同学的信息:姓名 学号 成绩↙ 请输入第3位同学的信息:姓名 学号 成绩↙ 请输入第4位同学的信息:姓名 学号 成绩↙ 请输入第5位同学的信息:姓名 学号 成绩↙ 钱七,10005,93↙ 王五,10003,95↙ 张三,10001,98↙ 赵六,10004,99↙ 李四,10002,100↙(326点数解答 | 2025-01-01 20:11:47)204
- 题目描述 对于一个数字字符串,如果它满足偶数下标处的数字为偶数且奇数下标处的数字为质数(下标从 0 开始,从左往右依次增大),我们称这它为“好数字”。 比如:"2582" 是“好数字”,因为偶数下标处的数字(下标为 0 的数字为 2、下标为 2 的数字为 8)是偶数,奇数下标处的数字(下标为 1 的数字为 5、下标为 3 的数字为 2)为质数。 但 "3245" 不是“好数字”,因为 3 在偶数下标处但不是偶数。 给你一个整数 n,请你返回长度为 n 且为“好数字”的数字字符串的个数。 由于答案可能会很大,请你将它对 10^9+7 取余后返回 。 注:一个数字字符串是指每一位都由 0 到 9 组成的字符串,且可能包含前导 0 。 输入描述 一个正整数,表示数字字符串的长度 n。 输出描述 一个正整数,表示最终的结果。 样例1 输入 1 输出 5 样例2 输入 5 输出 2000 样例3 输入 50 输出 564908303 提示 对于 100% 的数据,1≤n≤10^9。 请用C++语言完成(457点数解答 | 2025-07-21 17:46:17)94
- 题目描述 对于一个数字字符串,如果它满足偶数下标处的数字为偶数且奇数下标处的数字为质数(下标从 0 开始,从左往右依次增大),我们称这它为“好数字”。 比如:"2582" 是“好数字”,因为偶数下标处的数字(下标为 0 的数字为 2、下标为 2 的数字为 8)是偶数,奇数下标处的数字(下标为 1 的数字为 5、下标为 3 的数字为 2)为质数。 但 "3245" 不是“好数字”,因为 3 在偶数下标处但不是偶数。 给你一个整数 n,请你返回长度为 n 且为“好数字”的数字字符串的个数。 由于答案可能会很大,请你将它对 10^9+7 取余后返回 。 注:一个数字字符串是指每一位都由 0 到 9 组成的字符串,且可能包含前导 0 。 请用C++语言以及快速幂完成 输入描述 一个正整数,表示数字字符串的长度 n。 输出描述 一个正整数,表示最终的结果。 样例1 输入 1 输出 5 样例2 输入 5 输出 2000 样例3 输入 50 输出 564908303 提示 对于 100% 的数据,1≤n≤10^9。(488点数解答 | 2025-07-21 17:50:31)109
- 7955: 【C3】星际编码大赛:逆序争霸 时间限制: 1 Sec 内存限制: 128 MB 提交: 0 解决: 33 [提交][状态][命题人:zhangyinwei] 题目描述 在银河系年度编程巅峰赛的决赛舞台上,来自机械星的AI选手TX-007和植根于生物科技的异星人选手索菲亚迎来了终极对决。本届压轴题竟是古老地球文献中记载的经典算法问题——「逆序对」统计。 赛事光幕显现出题目细节:给定一个可变长度正整数序列,逆序对定义为序列中位置靠前的数字严格大于位置靠后的数字(即存在下标i<j且a_i>a_j)。 "注意序列可能存在重复元素!"主裁判——由全息粒子构成的上届冠军提醒道。这句话让索菲亚的触须微微颤动,她曾在训练中因重复值处理失误而错失练习赛冠军。而TX-007的电子眼已经浮现出归并排序算法的流程图,金属手指在能量键盘上蓄势待发。 输入 第一行,一个数 n,表示序列中有 n 个数。 第二行 n 个数,表示给定的序列。序列中每个数字不超过 10^9。 输出 输出序列中逆序对的数目。 样例输入 6 5 4 2 6 3 1 样例输出 11 提示 对于 25% 的数据(509点数解答 | 2025-04-19 17:33:00)162
- c++ 【题目描述】 输入一个整数n (保证范围在0 到25 之间),表示一个人的年龄。 如果n 在0∼3 的范围内,输出"infant"。 如果n 在4∼12 的范围内,输出"child"。 如果n 在13∼18 的范围内,输出"youngster"。 如果n 在19∼25 的范围内,输出"youth"。 【输入】 一个整数(范围在0 到25 之间)。 【输出】 一个英文单词,如题目描述所述。 【输入样例】 3 【输出样例】 infant(224点数解答 | 2025-02-28 11:15:18)171
- c++ 【题目描述】 输入一个整数n (保证范围在0 到25 之间),表示一个人的年龄。 如果n 在0∼3 的范围内,输出"infant"。 如果n 在4∼12 的范围内,输出"child"。 如果n 在13∼18 的范围内,输出"youngster"。 如果n 在19∼25 的范围内,输出"youth"。 【输入】 一个整数(范围在0 到25 之间)。 【输出】 一个英文单词,如题目描述所述。 【输入样例】 3 【输出样例】 infant(307点数解答 | 2025-02-28 11:29:56)291
- 一个饥饿的人被困在了迷宫当中,渴望走出迷宫。 迷宫的大小为 n × m n×m 但很可惜,有很多位置是不能走的。 每一步,你都可以向上下左右移动一次,花费一秒的时间。 但是迷宫被一种魔法包裹,只有移动时间恰好为 s s 秒的人才能走出去。 而你在迷宫中捡到了一个机器,可以帮助你在每一次向上下移动时消耗 k k 秒的时间,而左右走并不会消耗 k k 秒。 那么你能找到一个最小的正实数 k k 使得从起点到终点的最短用时等于 s s 吗? 数据保证有解 输入格式 第一行两个数 n , m n,m 第二行四个数 s x , s y , t x , t y sx,sy,tx,ty。分别表示起点所在行数、列数,终点所在行数、列数。 接下来 n n 行,每行 m m 个数,描述迷宫,其中 0 表示可以走,1 表示不能走。 最后一行一个正实数 s s。 输出格式 输出答案 k k,四舍五入保留 3 位小数。C++ (735点数解答 | 2025-07-01 15:27:29)75
- student类具体要求如下: 私有成员变量:学号(sid,string类型),姓名(name,string类型),年龄(age,int类型),专业(major,string类型) 。 提供无参构造和有参构造方法。(注意:有参构造方法中需要对年龄大小进行判定) 普通成员方法:print(),输出格式为“学号:6020203100,姓名:王宝强,年龄:21,专业:计算机科学与技术”。 普通成员方法:提供setxxx和getxxx方法。(注意:setage()方法中需要对年龄进行判定) 注意: 年龄age不大于0,则不进行赋值。 print()中的“:”和“,”为均为中文冒号和逗号。 public class main{ public static void main(string[] args) { scanner sc = new scanner(system.in); //调用无参构造方法,并通过setter方法进行设值 string sid1 = sc.next(); string name1 = sc.ne(464点数解答 | 2024-11-19 15:55:26)232
- c++ 【题目描述】 编程求解:正整数 m 和 n 之间(包括 m 和 n )能被 17 整除的数累加的结果是多少。其中,0<m<n<1000 。 【输入】 一行,包含两个整数 m 和 n ,以一个空格间隔。 【输出】 输出一行,包行一个整数,表示累加的结果。 【输入样例】 50 85 【输出样例】 204(469点数解答 | 2025-03-03 21:41:25)395