c语言算法 如何返回不确定数量的多个结果

图片说明
刚接触算法,不太会这样的结果返回
谢谢回答

3个回答

#include

using namespace std;
struct samequeue
{
int data[100];
int sum = 0;
int firstcount = 0;
int lastcount = 0;
};

const int arr[] = {5,7,3,3,3,9,14,4,11,5,5,4,14,14,8};
const int k = 25;

//检查是否为K
void checkIsK(samequeue &sq)
{
if (sq.sum == k)
{
cout << "起始位置:" << sq.firstcount << "\t"
<< "终止位置:" << sq.lastcount << "\t"
<< "子序列:"; for (int j = sq.firstcount; j <= sq.lastcount; ++j) cout << arr[j] << ",";
cout << "和:" << sq.sum << endl;
}
}

int main()
{
samequeue sq;
for (int i = 0; i {
sq.data[sq.lastcount] = arr[i];
sq.sum = sq.sum + arr[i];
while(sq.sum >= k)
{
checkIsK(sq);
sq.sum = sq.sum - sq.data[sq.firstcount];
sq.firstcount++;
}
sq.lastcount++;
}
getchar();
return true;
}

目前能 想到的就是两层循环遍历,时间复杂度为n2,显然不太好。

u012976158
强化脑细胞 回复qq_42928770: 记录起始和终止位置可以用结构体数组,或者用一维数组也可以
大约 2 年之前 回复
qq_42928770
南瓜菜 像题目里这种要返回好几个位置的不知道应该怎么处理了,应该是个很简单的问题
大约 2 年之前 回复
qq_42928770
南瓜菜 emmm。我主要想问的是算法结果的返回,因为刚学这些东西,以前接触的都是return 0,return一个具体值或者申请一个数组返回指针的。
大约 2 年之前 回复

用链表返回,
struct res{
uint32_t start;
uint32_t end;
uint32_t K;
uint32_t len;
uint32_t * res;
struct res * next;
};

或者使用写入文件(字符串)的方式返回
比如,定义文件格式

起始位置,终止位置,数字,数字,数字,...,K

每一行表示一个结果

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问