酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

c++程序:第一有两个正整数 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

好的,下面是一个C++程序,它可以根据给定的输入处理每个人的好感度变化,并输出最终每个人的好感度值。 ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; // 初始化每个人的好感度为0 vector<int> good(n + 1, 0); for (int i = 0; i < m; ++i) { int op, a, b, c; cin >> op >> a >> b >> c; if (op == 1) { // 做了好事,增加好感度 good[b] += c; } else if (op == 0) { // 做了坏事,减少好感度 good[b] -= c; } } // 输出每个人的最终好感度 for (int i = 1; i <= n; ++i) { cout << good[i] << " "; } return 0; } ``` 解释 1. 输入读取: - 首先读取两个整数 `n` 和 `m`,分别表示人数和事件的个数。 - 然后读取 `m` 行,每行包含四个整数 `op`, `a`, `b`, `c`。 2. 好感度初始化: - 使用一个大小为 `n+1` 的向量 `good` 来存储每个人的好感度,初始值为0。向量的大小为 `n+1` 是为了方便直接使用1到n作为索引。 3. 事件处理: - 对于每个事件,根据 `op` 的值来决定是增加还是减少 `b` 号同学的好感度。 - 如果 `op` 为1,表示做了好事,增加 `b` 号同学的好感度 `c`。 - 如果 `op` 为0,表示做了坏事,减少 `b` 号同学的好感度 `c`。 4. 输出结果: - 遍历并输出每个人的好感度值。 示例 假设输入如下: ``` 3 4 1 1 2 5 0 2 3 3 1 3 1 4 0 1 2 2 ``` 程序的输出将是: ``` 4 3 -3 ``` 解释: - 第1号同学对第2号同学做了好感度为5的好事,第2号同学的好感度增加5。 - 第2号同学对第3号同学做了好感度为3的坏事,第3号同学的好感度减少3。 - 第3号同学对第1号同学做了好感度为4的好事,第1号同学的好感度增加4。 - 第1号同学对第2号同学做了好感度为2的坏事,第2号同学的好感度减少2。 最终好感度: - 第1号同学:4 - 第2号同学:3 - 第3号同学:-3 希望这个程序能满足你的需求!如果有任何问题或需要进一步的修改,请告诉我。 [2024-10-17 15:53:50 | AI写代码神器 | 698点数解答]

相关提问