我试着通过电子邮件向我的教授发送电子邮件以寻求帮助,但他并没有太大的帮助。
给定从x开始的大小为50的区间为[x,x + 50](包括x和x + 50),找到放置此区间的位置,使其具有数组所指向的最大元素数它。仅考虑从集合中的数字开始的间隔。我真的坚持这个。
他给了我们一系列随机指针,这就是他的代码。我对它进行了分类。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i, n, temp, j, k, x;
int *info[100];
for (i = 0; i < 100; i++) {
info[i] = (int*)malloc(sizeof(int));
*info[i] = rand() % 1000;
}
for (k = 0; k < 100; k++) {
for (j = k; j < 100; j++) {
if (*info[k] > *info[j]) {
temp = *info[j];
*info[j] = *info[k];
*info[k] = temp;
}
}
}
for (k = 0; k < 100; k++) {
if (*info[k/50] = 1)
printf("%d\n %d\n", *info[k], *info[k] + 50);
break;
}
return 0;
}
答案 0 :(得分:1)
这是一个诚实的家庭作业问题 StackOverflow建议帮助但不解决 (后来发布了我刚刚测试过的解决方案代码。)
所以这里有一些提示:
[0,1000)
[x,x+50]
的可重定位范围几乎总是值范围的子范围
(它可能会超过1000)用
"VRA":=range of possibe values in random array
"." :=position of the value of one member of random array
(only a few examples, instead of 100)
"r" :=possible range,
starting at the value of one member in random array,
ending 50 later
VRA [ . .. . . . ... . . .. . )
0 1k
2 r [ ]
2 r [ ]
1 r [ ]
3 r [ ]
3 r [ ]
4 r [ ]
3 r [ ]
2 r [ ]
1 r [ ]
2 r [ ]
3 r [ ]
2 r [ ]
1 r [ ]
1 r [ ]
请注意,如果对随机数组进行排序,则点不会改变位置。
在我的情况下(在我的机器上,可重复,因为随机发生器没有播种),答案是10次点击,在从703开始的范围内,这是排序随机数组的索引62。对于未排序的数组,结果是相同的,仅在40 Offtopic:这让我很失望。如果我们有“四十多岁”和“两件事”,那么当然应该是42岁。嗯,无法帮助,在这个宇宙中,叙事的效果并不那么强烈。 (是的,我知道我正在混合两位作者的引用。)