gpt4 book ai didi

c++ - 电影周末 Codechef 初学者部分 : Runtime Error

转载 作者:行者123 更新时间:2023-11-28 02:07:46 25 4
gpt4 key购买 nike

我已经为这个问题编写了以下代码,ideone 没有给我运行时错误,但是 codechef 的编译器给了我一个。 codechef中的编译器是gcc 4.9.2

问题 [链接:https://www.codechef.com/problems/MOVIEWKN]

Little Egor 是一个 super 电影迷。他喜欢看不同类型的电影:从剧情片到喜剧片,从青春片到恐怖片。他计划这个周末去看电影,但不确定应该看哪部电影。这个周末有 n 部电影要看。每部电影可以用两个整数 Li 和 Ri 来表征,表示相应电影的长度和等级。 Egor 想看一部具有 Li × Ri 最大值的电影。如果有几部这样的电影,他会选择其中 Ri 最大的一部。如果仍然平局,他会选择其中索引最小的那个。你的任务是帮助 Egor 选择一部电影在这个周末观看。

预期输入

输入的第一行包含一个整数T,表示测试用例的数量。

测试用例描述的第一行包含一个整数n(电影数量)。

测试用例描述的第二行包含n个整数L1,L2,...,Ln(L是电影的长度)。下一行包含 n 个整数 R1, R2, ..., Rn(R 是电影的评分)。

我的意见
2
2
1 2
2 1
4
2 1 4 1
2 4 1 4

预期输出

对于每个测试用例,输出一个整数 i 表示电影的索引。请注意,遵循从 1 开始的索引。

我的输出
1
2

解释

在第一个示例中,两部电影的 L × R 值相同,但第一部电影的评分更高。在第二个示例案例中,第二部电影和第四部电影同样出色,但第二部电影的指数较小

我的解决方案

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main() {

int T;

cin >> T;
cin.ignore();

if (T >= 1 && T <= 5) {

for (int q = 0; q < T; q++) {


int n;
size_t pos;
cin >> n;
cin.ignore();

if (n >= 1 && n <= 100) {

vector<int> L;
vector<int> R;
vector<int> C;

for (int u = 0; u < n; u++) {

int a;
cin >> a;
cin.ignore();

if (a >= 1 && a <= 100) {

L.push_back(a);

}


}
for (int u = 0; u < n; u++) {

int a;
cin >> a;
cin.ignore();

if (a >= 1 && a <= 100) {

R.push_back(a);

}


}
for (int u = 0; u < n; u++) {

int df = (L[u] * R[u]);
C.push_back(df);



}



for (size_t u = 0; u < C.size(); u++) {

int max = C[0];


if (max < C[u]) {

max = C[u];
pos = u+1;
}

if (max == C[u]) {

if (R[pos-1] < R[u]) { pos = u + 1; }
if (R[pos - 1] == R[u]) {

if (pos > u) { pos = u + 1; }

}

}


}

cout << pos << endl;


}

}

}

return 0;
}

在解决了一些关于 codechef 问题的运行时错误问题后,我猜测问题与访问边界元素有关,但我无法查明实际问题

最佳答案

在这一行中:

if (R[pos - 1] < R[u]) { pos = u + 1; }

循环的第一次,pos 未初始化,导致未定义的行为。

简单修复:

在循环前添加pos = 1

关于c++ - 电影周末 Codechef 初学者部分 : Runtime Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36830284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com