gpt4 book ai didi

c - 如何返回在数组中获得最佳总和的索引?

转载 作者:行者123 更新时间:2023-11-30 14:56:51 25 4
gpt4 key购买 nike

我只需要输入一个数组,让程序返回产生最大总和的索引范围。

示例

对于 A = {5, -6, 7, -5, 10, -1} – 最佳总和由 A[2..4] 中的值组成,总计 7 + -5 + 10 = 12

对于 A = {1, 2, 4, -6, 4, 2, 1} – 最佳总和由 A[0..6](整个数组)中的值组成,总共 8

对于 A = {-5, 2, -3, 1, -5, 4, -2} – 最佳总和由 A[5] 中的值组成,总计 4

如果有人可以帮助我返回以下值,我将不胜感激

这是我的代码(似乎无法正常运行)

#include<stdio.h>

int the_resource_collection( int arr[], int len){
int highest, start, end, i, result;
highest = arr[len-1];// the limits of the highest value
start = len - 1;
end = len - 1;// all the variables in the total indexes
for( i=0; i<len-2; i++)
{
for (a=i; a<len-1; a++)
{
result= arr[i]+ arr[a];// try to find the total of the index
{
if (result > highest)
{
highest = result;
start = i;
end = a;
}
}
}
}
return start;
return end;
}
int main()
{
int a[6] = {5, -6, 7, -5, 10, -1};
int length = 6;
printf("%d",the_resource_collection(&a[6],length));
}

最佳答案

好吧,你有一些错误。

首先,在 printf("%d",the_resource_collection(&a[6],length)); 中,您仅将数组的第六个元素传递给函数。

此外,您的 for 循环并未考虑数组的所有元素。最后,您还需要将开头和结尾保存在 int 数组中。

这是我的做法(我已经使用您提供的 3 个输入对其进行了测试,输出符合预期!):

#include<stdio.h>
int * the_resource_collection( int arr[], int len){
int highest;
int returnvalue[2];
int i;
int a;
int result;
highest = arr[len-1];// the limits of the highest value
returnvalue[0] = len - 1;
returnvalue[1] = len - 1;// all the variables in the total indexes
for( i=0; i<len; i++)
{
result= arr[i];
for (a=i+1; a<len; a++)
{
if (result > highest)
{
highest = result;
returnvalue[0] = i;
returnvalue[1] = a-1;
}
result+=arr[a];
}
if (result > highest)
{
highest = result;
returnvalue[0] = i;
returnvalue[1] = a-1;
}
result=0;
}
return returnvalue;
}
int main()
{
int a[7] = {5, -6, 7, -5, 10, -1};
int length = 7;
printf("A[%d...%d]\n",the_resource_collection(a,length)[0],the_resource_collection(a,length)[1]);
}

如果您不明白我写的内容,或者需要更多帮助,请说出来。

关于c - 如何返回在数组中获得最佳总和的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44366538/

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