哎,你们写的,我一点都不懂

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能 !
程序代码:#include <stdio.h>
void Swap(int* p1, int* p2)
{
int tmp = *p1; *p1 = *p2; *p2 = tmp;
}
void Reverse(int* start, int* end)
{
while (start < end)
Swap(start++, --end);
}
void NextPermutation(int* start, int* end)
{
int* p, *sp = end - 2;
if (start >= end - 1)
return;
if (sp[0] < sp[1]) {
Swap(sp, sp + 1);
return;
}
while (sp >= start) {
if (sp[0] < sp[1])
break;
--sp;
}
if (sp < start)
Reverse(start, end);
else {
for (p = end - 1; p > sp; --p)
if (*p > *sp) {
Swap(sp, p);
break;
}
Reverse(sp + 1, end);
}
}
int main()
{
int m, n, k, i, array[1024];
scanf("%d", &m);
while (m--) {
scanf("%d%d", &n, &k);
for (i = 0; i < n; ++i)
scanf("%d", array + i);
while (k--)
NextPermutation(array, array + n);
printf("%d", array[0]);
for (i = 1; i < n; ++i)
printf(" %d", array[i]);
putchar('\n');
}
}这个自己测试过没问题,但是提交就Runtime error。找不到那里有问题,而且也查不到出错信息。