gpt4 book ai didi

C++压缩两个for循环提高效率

转载 作者:太空宇宙 更新时间:2023-11-04 15:06:49 26 4
gpt4 key购买 nike

我有一个结构数组,我需要从中检索数据。该数组包含姓名和分数。

对于一个函数,我必须输出最高分和关联的名称。如果有多个案例,我必须输出所有名称。

我不能使用 vector 或列表。 (否则我会)我只想在同一步骤中执行这两个操作。

我是这样处理的:

void highScorer (  player array[], int size )
{ // highScorer

int highScore = 0; //variable to hold the total score

// first loop determines highest score
for ( int i = 0; i < size; i++ ) {

if ( array[i].pointsScored > highScore ) {
highScore = array[i].pointsScored;
}
}
cout << "\nThe highest scoring player(s) were:\n";
// second loop finds players with scores matching highScore and prints their name(s)
for ( int i = 0; i < size; i++ ) {
// when a match is found, the players name is printed out
if ( array[i].pointsScored == highScore ) {
cout << array[i].playerName;
cout << ", scored ";
// conditional will output correct grammar
if ( array[i].pointsScored > 1 ) {
cout << array[i].pointsScored << " points!\n";
}
else {
cout << array[i].pointsScored << " point!\n";
}
}
}
cout << "\n"; // add new line for readability
return;

} // highScorer

我想将其压缩为一个 for 循环。除非有人建议使用更有效的方法。我认为没有必要对数据进行排序。另外,如果排序了,如何确定一步中是否有多个“highScore”案例。

最佳答案

除了您的 highScore 变量之外,您还创建了第二个变量,例如 std::list (或手动链表甚至小数组,具体取决于您可以使用的内容)。在此列表中,您可以跟踪实际拥有当前高分的人的指数。如果找到新的高分,则清除该列表并添加具有新高分的人。如果找到得分最高的人,您只需将他添加到列表中即可。

然后在循环之后你只需要打印这个列表中索引的玩家,而不是再次找出谁有高分。

关于C++压缩两个for循环提高效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360179/

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